// compatibility routines, non reentrant .... #include #include struct tm* localtime_r(const time_t* t, struct tm* r) { struct tm * temp; temp = localtime(t); memcpy(r,temp,sizeof(struct tm)); return(r); } struct tm* gmtime_r(const time_t* t, struct tm* r) { struct tm * temp; temp = gmtime(t); memcpy(r,temp,sizeof(struct tm)); return r; } char* ctime_r (const time_t* t, char* buf) { char * temp; temp = asctime(localtime(t)); strcpy(buf,temp); return(buf); } /* s Points to the string from which to extract tokens. delim Points to a null-terminated set of delimiter characters. save_ptr Is a value-return parameter used by strtok_r() to record its progress through s1. */ char * strtok_r (char *s, const char *delim, char **save_ptr) { char *token; if (s == NULL) s = *save_ptr; /* Scan leading delimiters. */ s += strspn(s, delim); if (*s == '\0') { *save_ptr = s; return NULL; } /* Find the end of the token. */ token = s; s = strpbrk (token, delim); if (s == NULL) { /* This token finishes the string. */ *save_ptr = token; while (**save_ptr != '\0') (*save_ptr)++; } else { /* Terminate the token and make *SAVE_PTR point past it. */ *s = '\0'; *save_ptr = s + 1; } return token; }