/* return current time as bnettime */ extern t_bnettime bnettime(void) { struct timeval tv; if (gettimeofday(&tv, NULL) < 0) { eventlog(eventlog_level_error, __FUNCTION__, "could not get time (gettimeofday: {})", std::strerror(errno)); return time_to_bnettime(std::time(NULL), 0); } return time_to_bnettime((std::time_t)tv.tv_sec, tv.tv_usec); }
static char const * file_get_info(char const * rawname, unsigned int * len, bn_long * modtime) { char *filename; t_bnettime bt; struct stat sfile; if (!rawname) { eventlog(eventlog_level_error,__FUNCTION__,"got NULL rawname"); return NULL; } if (!len) { eventlog(eventlog_level_error,__FUNCTION__,"got NULL len"); return NULL; } if (!modtime) { eventlog(eventlog_level_error,__FUNCTION__,"got NULL modtime"); return NULL; } if (std::strchr(rawname,'/') || std::strchr(rawname,'\\')) { eventlog(eventlog_level_warn,__FUNCTION__,"got rawname containing '/' or '\\' \"%s\"",rawname); return NULL; } filename = buildpath(prefs_get_filedir(), rawname); if (stat(filename, &sfile)<0) { /* if it doesn't exist, try to replace with default file */ xfree((void*)filename); filename = file_find_default(rawname); if (!filename) return NULL; /* no default version */ if (stat(filename, &sfile)<0) { /* try again */ /* FIXME: check for lower-case version of filename */ xfree(filename); return NULL; } } *len = (unsigned int)sfile.st_size; bt = time_to_bnettime(sfile.st_mtime,0); bnettime_to_bn_long(bt,modtime); return filename; }
static char const * file_get_info(char const * rawname, unsigned int * len, bn_long * modtime) { const char *filename; t_bnettime bt; struct stat sfile; if (!rawname) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL rawname"); return NULL; } if (!len) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL len"); return NULL; } if (!modtime) { eventlog(eventlog_level_error, __FUNCTION__, "got NULL modtime"); return NULL; } if (std::strchr(rawname, '/') || std::strchr(rawname, '\\')) { eventlog(eventlog_level_warn, __FUNCTION__, "got rawname containing '/' or '\\' \"%s\"", rawname); return NULL; } filename = file_find_localized(rawname); // if localized file not found in "i18n" if (!filename || stat(filename, &sfile) < 0) { // try find it in "files" filename = buildpath(prefs_get_filedir(), rawname); if (stat(filename, &sfile) < 0) { /* try again */ /* FIXME: check for lower-case version of filename */ return NULL; } } *len = (unsigned int)sfile.st_size; bt = time_to_bnettime(sfile.st_mtime, 0); bnettime_to_bn_long(bt, modtime); return filename; }