LINUX.ORG.RU
решено ФорумAdmin

не компилится SARG-2.4.0 в Centos 8

 ,


0

1

Make выдает:

Google безмолвствует.

index.c: В функции «make_date_index»:
index.c:622:43: ошибка: «%04d» директивный вывод может быть усечен записью 4 байт в область размера от 1 до 5 [-Werror=format-truncation=]
    snprintf(yearnum,sizeof(yearnum),"%04d-%04d",year>>10,year & 0x3FF);
                                           ^~~~
index.c:622:37: замечание: аргумент директивы в диапазоне [1, 1023]
    snprintf(yearnum,sizeof(yearnum),"%04d-%04d",year>>10,year & 0x3FF);
                                     ^~~~~~~~~~~
index.c:622:4: замечание: «snprintf» вывод от 10 до 14 байт в приемник размера 10
    snprintf(yearnum,sizeof(yearnum),"%04d-%04d",year>>10,year & 0x3FF);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: некоторые предупреждения считаются ошибками
make: *** [Makefile:75: index.o] Ошибка 1

Есть у кого то мысли, что делать или в чем я не прав? Мне мало о чем говорит ошибка.

★★★★

Если без байтойобства, то добавит флаг -Wno-format-truncation, например, в Makefile.

Либо:

$ CFLAGS=-Wno-format-truncation make

В противном случае нужно смотреть тип year и исправлять эти ошибки отсечения (внося изменения в код программы).

EXL ★★★★★
()

Как раз на Centos 8

--- a/index.c   2020-06-16 10:58:15.000000000 +0300
+++ b/index.c   2020-06-16 11:31:27.470194735 +0300
@@ -535,7 +535,7 @@ static void make_date_index(void)
        struct dirent *direntp;
        char yearindex[MAXLEN];
        char yeardir[MAXLEN];
-       char yearnum[10];
+       char yearnum[20];
        int yearsort[150];
        int nyears;
        int year;
diff -pu a/userinfo.c b/userinfo.c
--- a/userinfo.c        2020-06-16 10:58:15.000000000 +0300
+++ b/userinfo.c        2020-06-16 11:35:30.041695280 +0300
@@ -78,7 +78,7 @@ struct userinfostruct *userinfo_create(c
        int skip;
        int flen;
        int count, clen;
-       char cstr[9];
+       char cstr[12];
        char filename[MAX_USER_FNAME_LEN];
 
        if (!UserStrings) {

Kuzz ★★★
()
Ответ на: комментарий от EXL

Попробовал второй вариант, не помогло. А исправлять ошибки отсечения, это не моим ртом мышей ловить :)

alex_sim ★★★★
() автор топика
Ответ на: комментарий от alex_sim

Как обычный патч.
Можно сохранить в исходниках и применить, а можно (если sarg ставится через make && make install) увидеть, что меняется и самому в исходниках поменять:
в index.c char yearnum[10]; на char yearnum[20];, а в userinfo.c (там такая же ошибка вылезет) char cstr[9]; на char cstr[12];

Kuzz ★★★
()
Ответ на: комментарий от Kuzz

Спасибо я раскурил, поменял размерчик и вроде все собралось.

alex_sim ★★★★
() автор топика
3 ноября 2020 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.