static char * log_create_pathname (char *servname, char *channame, char *netname) { char fname[384]; char fnametime[384]; char *fs; struct tm *tm; time_t now; if (!netname) { netname = "NETWORK"; } /* first, everything is in UTF-8 */ if (!rfc_casecmp (channame, servname)) { channame = strdup ("server"); } else { channame = log_create_filename (channame); } log_insert_vars (fname, sizeof (fname), prefs.logmask, channame, netname, servname); free (channame); /* insert time/date */ now = time (NULL); tm = localtime (&now); strftime (fnametime, sizeof (fnametime), fname, tm); /* create final path/filename */ if (logmask_is_fullpath ()) { snprintf (fname, sizeof (fname), "%s", fnametime); } else /* relative path */ { snprintf (fname, sizeof (fname), "%s/logs/%s", get_xdir_utf8 (), fnametime); } /* now we need it in FileSystem encoding */ fs = xchat_filename_from_utf8 (fname, -1, 0, 0, 0); /* create all the subdirectories */ if (fs) { mkdir_p (fs); } return fs; }
static char* log_create_pathname(char *servname, char *channame, char *netname) { char fname[384]; char fnametime[384]; char *fs; tm *tm; time_t now; if (!netname) netname = "NETWORK"; // first, everything is in UTF-8 if (!rfc_casecmp(channame, servname)) channame = strdup("server"); else channame = log_create_filename(channame); log_insert_vars(fname, sizeof(fname), prefs.logmask, channame, netname, servname); free(channame); // insert time/date now = time(nullptr); tm = localtime(&now); strftime(fnametime, sizeof(fnametime), fname, tm); // create final path/filename #ifdef WIN32 if (fnametime[0] == '/' || (fnametime[0] >= 'A' && fnametime[1] == ':')) #else if (fnametime[0] == '/') // is it fullpath already? #endif snprintf(fname, sizeof(fname), "%s", fnametime); else snprintf(fname, sizeof(fname), "%s/xchatlogs/%s", get_xdir_utf8(), fnametime); // now we need it in FileSystem encoding fs = xchat_filename_from_utf8(fname, -1, 0, 0, 0); // create all the subdirectories if (fs) mkdir_p(fs); return fs; }