* \brief Copy a string to a new location
* \note Copies at most `max` chars
*/
-char *strncpy(char *__str1, const char *__str2, size_t max)
+char *strncpy(char *__str1, const char *__str2, size_t __max)
{
- while(*__str2 && max-- >= 1)
+ while(*__str2 && __max-- >= 1)
*__str1++ = *__str2++;
- if(max)
+ if(__max)
*__str1 = '\0'; // Terminate String
return __str1;
}
{
// ASCII
if( Val < 128 ) {
- *str = Val;
+ if( str ) {
+ *str = Val;
+ }
return 1;
}
// Two Byte
if( Val < 0x8000 ) {
- *str = 0xC0 | (Val >> 6);
- str ++;
- *str = 0x80 | (Val & 0x3F);
+ if( str ) {
+ *str++ = 0xC0 | (Val >> 6);
+ *str++ = 0x80 | (Val & 0x3F);
+ }
return 2;
}
// Three Byte
if( Val < 0x10000 ) {
- *str = 0xE0 | (Val >> 12);
- str ++;
- *str = 0x80 | ((Val >> 6) & 0x3F);
- str ++;
- *str = 0x80 | (Val & 0x3F);
+ if( str ) {
+ *str++ = 0xE0 | (Val >> 12);
+ *str++ = 0x80 | ((Val >> 6) & 0x3F);
+ *str++ = 0x80 | (Val & 0x3F);
+ }
return 3;
}
// Four Byte
if( Val < 0x110000 ) {
- *str = 0xF0 | (Val >> 18);
- str ++;
- *str = 0x80 | ((Val >> 12) & 0x3F);
- str ++;
- *str = 0x80 | ((Val >> 6) & 0x3F);
- str ++;
- *str = 0x80 | (Val & 0x3F);
+ if( str ) {
+ *str++ = 0xF0 | (Val >> 18);
+ *str++ = 0x80 | ((Val >> 12) & 0x3F);
+ *str++ = 0x80 | ((Val >> 6) & 0x3F);
+ *str++ = 0x80 | (Val & 0x3F);
+ }
return 4;
}