cpp.texi (__TIMESTAMP__): Document.
2006-02-17 Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com> gcc/ChangeLog: * doc/cpp.texi (__TIMESTAMP__): Document. libcpp/ChangeLog: * macro.c (_cpp_builtin_macro_text): Handle BT_TIMESTAMP. * files.c (_cpp_get_file_stat): New function. * include/cpplib.h (builtin_type): Add BT_TIMESTAMP. * init.c (builtin_array): Add support for __TIMESTAMP__/BT_TIMESTAMP. * internal.h (_cpp_get_file_stat): Prototype. (struct cpp_buffer): Add timestamp. gcc/testsuite/ChangeLog: * gcc.dg/cpp/undef3.c: New test. * gcc.dg/cpp/trad/builtins2.c: New test. From-SVN: r111232
This commit is contained in:
parent
8d08b2d786
commit
be8ac3e243
9 changed files with 82 additions and 1 deletions
|
@ -123,6 +123,44 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
|
|||
NODE_NAME (node));
|
||||
break;
|
||||
|
||||
case BT_TIMESTAMP:
|
||||
{
|
||||
cpp_buffer *pbuffer = cpp_get_buffer (pfile);
|
||||
if (pbuffer->timestamp == NULL)
|
||||
{
|
||||
/* Initialize timestamp value of the assotiated file. */
|
||||
struct _cpp_file *file = cpp_get_file (pbuffer);
|
||||
if (file)
|
||||
{
|
||||
/* Generate __TIMESTAMP__ string, that represents
|
||||
the date and time of the last modification
|
||||
of the current source file. The string constant
|
||||
looks like "Sun Sep 16 01:03:52 1973". */
|
||||
struct tm *tb = NULL;
|
||||
struct stat *st = _cpp_get_file_stat (file);
|
||||
if (st)
|
||||
tb = localtime (&st->st_mtime);
|
||||
if (tb)
|
||||
{
|
||||
char *str = asctime (tb);
|
||||
size_t len = strlen (str);
|
||||
unsigned char *buf = _cpp_unaligned_alloc (pfile, len + 2);
|
||||
buf[0] = '"';
|
||||
strcpy ((char *) buf + 1, str);
|
||||
buf[len] = '"';
|
||||
pbuffer->timestamp = buf;
|
||||
}
|
||||
else
|
||||
{
|
||||
cpp_errno (pfile, CPP_DL_WARNING,
|
||||
"could not determine file timestamp");
|
||||
pbuffer->timestamp = U"\"??? ??? ?? ??:??:?? ????\"";
|
||||
}
|
||||
}
|
||||
}
|
||||
result = pbuffer->timestamp;
|
||||
}
|
||||
break;
|
||||
case BT_FILE:
|
||||
case BT_BASE_FILE:
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue