char *safestrncpy(char *dest, const char *src, size_t n)
{
+ int i = 0;
+
if (dest == NULL || src == NULL) {
fprintf(stderr, "safestrncpy: NULL argument\n");
abort();
}
- strncpy(dest, src, n);
+
+ do {
+ dest[i] = src[i];
+ if (dest[i] == 0) return(dest);
+ ++i;
+ } while (i<n);
dest[n - 1] = 0;
return dest;
}
/*
* num_tokens() - discover number of parameters/tokens in a string
*/
-int num_tokens(const char *source, char tok) {
- int a;
+int num_tokens(const char *source, char tok)
+{
int count = 1;
+ const char *ptr = source;
- if (source == NULL) return(0);
- for (a=0; a<strlen(source); ++a) {
- if (source[a]==tok) ++count;
+ if (source == NULL) {
+ return (0);
}
- return(count);
+
+ while (*ptr != '\0') {
+ if (*ptr++ == tok) {
+ ++count;
+ }
+ }
+
+ return (count);
}