Какая программа / утилита использует специальную строку "@ (#)" в исходном коде? - PullRequest
1 голос
/ 27 октября 2009

В комментариях в исходном коде (особенно в старом коде) в комментариях заголовка можно увидеть имя файла, дату и, возможно, другую информацию в этом специальном формате:

/ * @ (#) fdlibm.h 1.5 95/01/18 * /

(см. Также: http://www.google.com/codesearch?q=%22%40%28%23%29%22&hl=en&btnG=Search+Code)

Это очень похоже (или, возможно, связано?) На RCS-подобную строку "$ Id $" ($ Header $ и т. Д.). Я думал, что «файловая» утилита командной строки или подобное будет искать эти «волшебные» строки в исходном коде, но это не так.

Есть ли утилита / программа (кроме 'grep'!), Которая на самом деле использует эти строки с префиксом "@ (#)"?

Ответы [ 2 ]

8 голосов
/ 27 октября 2009

Это будет SCCS , система контроля версий мезозойской эры. Эта магическая строка используется командой what .

0 голосов
/ 30 октября 2009

«что» (из SCCS) действительно правильный ответ (спасибо Джонатан). Я надеялся найти современную кроссплатформенную версию «что», которая могла бы работать даже для двоичных файлов (например, «strings xfile | grep ...»). В настоящее время кажется, что «что» обычно все еще встречается только в Solaris.

Вот пример ...

$ cat foobar.c
/*
* @(#) foobar.c  9.04 (mn) 10/29/2009
*/
static const char * foobar = "@(#) some string";
int main(int argc, char *argv[]) { }

$ gcc foobar.c

$ what a.out  foobar.c
a.out:
         some string
        SunOS 5.10 s10_69 December 2004
foobar.c:
         foobar.c  9.04 (mn) 10/29/2009
         some string

$ strings a.out | grep '@(#)'
@(#) some string

ps: я пытался опубликовать это как комментарий к правильному ответу Джонатана, но форматирование исходного кода не вполне сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...