int i;
char *ptr;
+ char *saveptr;
char *lines[16];
int lines_num = 0;
}
ptr = apache_buffer;
- while ((lines[lines_num] = strtok (ptr, "\n\r")) != NULL)
+ saveptr = NULL;
+ while ((lines[lines_num] = strtok_r (ptr, "\n\r", &saveptr)) != NULL)
{
ptr = NULL;
lines_num++;
int n;
char recvline[1024];
char *tokptr;
+ char *toksaveptr;
char *key;
double value;
printf ("net_recv = `%s';\n", recvline);
#endif /* if APCMAIN */
- tokptr = strtok (recvline, " :\t");
+ toksaveptr = NULL;
+ tokptr = strtok_r (recvline, " :\t", &toksaveptr);
while (tokptr != NULL)
{
key = tokptr;
- if ((tokptr = strtok (NULL, " :\t")) == NULL)
+ if ((tokptr = strtok_r (NULL, " :\t", &toksaveptr)) == NULL)
continue;
value = atof (tokptr);
else if (strcmp ("TIMELEFT", key) == 0)
apcups_detail->timeleft = value;
- tokptr = strtok (NULL, ":");
+ tokptr = strtok_r (NULL, ":", &toksaveptr);
} /* while (tokptr != NULL) */
}
{
size_t i;
char *ptr;
+ char *saveptr;
i = 0;
ptr = string;
- while ((fields[i] = strtok (ptr, " \t")) != NULL)
+ saveptr = NULL;
+ while ((fields[i] = strtok_r (ptr, " \t", &saveptr)) != NULL)
{
ptr = NULL;
i++;
char *fields[16];
int fields_num;
char *ptr;
+ char *saveptr;
int last_is_file = 1;
int path_is_absolute = 0;
int len;
path_is_absolute = 1;
/*
- * Create a copy for `strtok' to destroy
+ * Create a copy for `strtok_r' to destroy
*/
strncpy (file_copy, file_orig, 512);
file_copy[511] = '\0';
* remove leading and trailing slashes..
*/
ptr = file_copy;
+ saveptr = NULL;
fields_num = 0;
- while ((fields[fields_num] = strtok (ptr, "/")) != NULL)
+ while ((fields[fields_num] = strtok_r (ptr, "/", &saveptr)) != NULL)
{
ptr = NULL;
fields_num++;
{
time_t now;
- struct tm *tm;
+ struct tm stm;
- /* TODO: Find a way to minimize the calls to `localtime', since
- * they are pretty expensive.. */
+ /* TODO: Find a way to minimize the calls to `localtime_r',
+ * since they are pretty expensive.. */
now = time (NULL);
- tm = localtime (&now);
+ if (localtime_r (&now, &stm) == NULL)
+ {
+ syslog (LOG_ERR, "csv plugin: localtime_r failed");
+ return (1);
+ }
strftime (buffer + offset, buffer_len - offset,
- "-%Y-%m-%d", tm);
-
- /* `localtime(3)' returns a pointer to static data,
- * therefore the pointer may not be free'd. */
+ "-%Y-%m-%d", &stm);
}
return (0);
static void exec_child (program_list_t *pl)
{
- struct passwd *sp;
int status;
int uid;
char *arg0;
- /* FIXME: Not thread safe! */
- sp = getpwnam (pl->user);
- if (sp == NULL)
+ struct passwd *sp_ptr;
+ struct passwd sp;
+ char pwnambuf[2048];
+
+ sp_ptr = NULL;
+ status = getpwnam_r (pl->user, &sp, pwnambuf, sizeof (pwnambuf), &sp_ptr);
+ if (status != 0)
+ {
+ syslog (LOG_ERR, "exec plugin: getpwnam_r failed: %s", strerror (status));
+ exit (-1);
+ }
+ if (sp_ptr == NULL)
{
- syslog (LOG_ERR, "exec plugin: getpwnam failed: %s", strerror (errno));
+ syslog (LOG_ERR, "exec plugin: No such user: `%s'", pl->user);
exit (-1);
}
- uid = sp->pw_uid;
+ uid = sp.pw_uid;
if (uid == 0)
{
syslog (LOG_ERR, "exec plugin: Cowardly refusing to exec program as root.");
char buf[1024];
char *fields[128];
char *ptr;
+ char *saveptr;
int num_fields;
int num_disks;
int i;
if (hddtemp_query_daemon (buf, sizeof (buf)) < 0)
return (-1);
- /* NB: strtok will eat up "||" and leading "|"'s */
+ /* NB: strtok_r will eat up "||" and leading "|"'s */
num_fields = 0;
ptr = buf;
- while ((fields[num_fields] = strtok (ptr, "|")) != NULL)
+ saveptr = NULL;
+ while ((fields[num_fields] = strtok_r (ptr, "|", &saveptr)) != NULL)
{
ptr = NULL;
num_fields++;
do
{
+ char *grpname;
struct group *g;
+ struct group sg;
+ char grbuf[2048];
- errno = 0;
- g = getgrnam ((sock_group != NULL) ? sock_group : COLLECTD_GRP_NAME);
+ grpname = (sock_group != NULL) ? sock_group : COLLECTD_GRP_NAME;
+ g = NULL;
- if (errno != 0)
+ status = getgrnam_r (grpname, &sg, grbuf, sizeof (grbuf), &g);
+ if (status != 0)
{
- syslog (LOG_WARNING, "unixsock plugin: getgrnam (%s) failed: %s",
- (sock_group != NULL) ? sock_group : COLLECTD_GRP_NAME,
- strerror (errno));
+ syslog (LOG_WARNING, "unixsock plugin: getgrnam_r (%s) failed: %s",
+ grpname, strerror (status));
break;
}
-
if (g == NULL)
+ {
+ syslog (LOG_WARNING, "unixsock plugin: No such group: `%s'",
+ grpname);
break;
+ }
if (chown ((sock_file != NULL) ? sock_file : US_DEFAULT_PATH,
(uid_t) -1, g->gr_gid) != 0)