make sure AUTOCONF_TIMESTAMP is filled up properly ... if user has a timezone of Factory for example, strftime() will overflow the string and leave us without a trailing "\n and all hell breaks loose when we compile

This commit is contained in:
Mike Frysinger 2006-12-30 19:43:35 +00:00
parent 40ae9b5617
commit 68ffb9a85d

View File

@ -395,9 +395,18 @@ int conf_write(const char *name)
char buf[sizeof("#define AUTOCONF_TIMESTAMP "
"\"YYYY-MM-DD HH:MM:SS some_timezone\"\n")];
buf[0] = '\0';
if (use_timestamp)
strftime(buf, sizeof(buf), "#define AUTOCONF_TIMESTAMP "
"\"%Y-%m-%d %H:%M:%S %Z\"\n", localtime(&now));
if (use_timestamp) {
size_t ret = \
strftime(buf, sizeof(buf), "#define AUTOCONF_TIMESTAMP "
"\"%Y-%m-%d %H:%M:%S %Z\"\n", localtime(&now));
/* if user has Factory timezone or some other odd install, the
* %Z above will overflow the string leaving us with undefined
* results ... so let's try again without the timezone.
*/
if (ret == 0)
strftime(buf, sizeof(buf), "#define AUTOCONF_TIMESTAMP "
"\"%Y-%m-%d %H:%M:%S\"\n", localtime(&now));
}
fprintf(out_h, "/*\n"
" * Automatically generated C config: don't edit\n"
" * Linux kernel version: %s\n"