Проблема сборки PAPyRUS под OpenBSD 6.2

  • olegus 08.10.2023
    Хочу спросить, почему именно OpenBSD?
  • AkhmedSatajaAkhmedSataja 08.10.2023
    Эх, отпишусь через неделю. Нелегка доля говнокодера. Хотя, нет. Не говнокодера. Как назвать того, кто пытается оживить древний код, при этом не зная ЯП, на котором оный написан? Некромант-самоучка?
  • AkhmedSatajaAkhmedSataja 09.10.2023
    Ну, я пишу немного раньше недели. Убрал все предупреждения, в основном связанные с неправильным использованием указателей и попыткой записи в
    char *bla-bla;
    Пришлось наделать жутких костылей, вроде:
    char 		list_c[][2][128]={
    {"AddEntry", 		"ae"},
    {"AddFont", 		"af"},
    {"AddStyle",		"as"},
    {"DeleteStyle",		"ds"},
    {"PapyConfigure",	"ppc"},
    {"DocConfigure",	"dc"},
    {"ParaConfigure",       "pc"},
    {"WordConfigure",          "wc"},
    {"PapyQuery",             "ppq"},
    {"DocQuery",               "dq"},
    {"ParaQuery",              "pq"},
    {"WordQuery",              "wq"},
    {"NewDocument",            "nd"},
    {"NewParagraph",           "np"},
    {"NewWord",                "nw"},
    {"CloseDocument",          "cld"},
    {"InsertCharacter",        "ic"},
    {"InsertImage",            "ii"},
    {"InsertString",           "is"},
    {"DeleteCharacterBefore",  "dcb"},
    {"DeleteCharacterAfter",   "dca"},
    {"MoveCursorLeft",         "mcl"},
    {"MoveCursorRight",        "mcr"},
    {"MoveCursorUp",           "mcu"},
    {"MoveCursorDown",         "mcd"},
    {"MoveCursorNextWord",     "mcnw"},
    {"MoveCursorPreviousWord", "mcpw"},
    {"MoveCursorBeginLine",    "mcbl"},
    {"MoveCursorEndLine",      "mcel"},
    {"MoveCursorXY",           "mcxy"},
    {"SelectRegion",           "sr"},
    {"SetZoom",                "sz"},
    {"SetKey",                 "sk"},
    {"SetCursor",              "sc"},
    {"DocOutput",              "do"},
    {"WordOutput",             "wo"},
    {"RefreshScreen",          "rs"},
    {"Debug",                  "dbg"}
    };
    
    <b>[bla-bla-bla]</b>
    
    /*
     * List of the new functions.
     */
    
    Papyrus_Cmd baseCommands[] = {
    
      { list_c[0][0],             list_c[0][1],   AddEntry_Cmd               },
      { list_c[1][0],             list_c[1][1],   AddFont_Cmd                },
      { list_c[2][0],             list_c[2][1],   AddStyle_Cmd               },
    
      { list_c[3][0],             list_c[3][1],   DeleteStyle_Cmd            },
    
      { list_c[4][0],             list_c[4][1],   PapyrusConfigure_Cmd       },
      { list_c[5][0],    	      list_c[5][1],   DocumentConfigure_Cmd      },
      { list_c[6][0],    	      list_c[6][1],   ParagraphConfigure_Cmd     },
      { list_c[7][0],    	      list_c[7][1],   WordConfigure_Cmd          },
      
      { list_c[8][0],    	      list_c[8][1],   PapyrusQuery_Cmd           },
      { list_c[9][0],    	      list_c[9][1],   DocumentQuery_Cmd          },
      { list_c[10][0],    	      list_c[10][1],   ParagraphQuery_Cmd         },
      { list_c[11][0],    	      list_c[11][1],   WordQuery_Cmd              },
    
      { list_c[12][0],    	      list_c[12][1],   NewDocument_Cmd            },
      { list_c[13][0],    	      list_c[13][1],   NewParagraph_Cmd           },
      { list_c[14][0],    	      list_c[14][1],   NewWord_Cmd                },
    
      { list_c[15][0],    	      list_c[15][1],   CloseDocument_Cmd          },
    
      { list_c[16][0],    	      list_c[16][1],   InsertCharacter_Cmd        },
      { list_c[17][0],    	      list_c[17][1],   InsertImage_Cmd            },
      { list_c[18][0],    	      list_c[18][1],   InsertString_Cmd           },
      { list_c[19][0],    	      list_c[19][1],  DeleteCharacterBefore_Cmd  },
      { list_c[20][0],    	      list_c[20][1],  DeleteCharacterAfter_Cmd   },
    
      { list_c[21][0],    	      list_c[21][1],  MoveCursorLeft_Cmd         },
      { list_c[22][0],    	      list_c[22][1],  MoveCursorRight_Cmd        },
      { list_c[23][0],    	      list_c[23][1],  MoveCursorUp_Cmd           },
      { list_c[24][0],    	      list_c[24][1],  MoveCursorDown_Cmd         },
      { list_c[25][0],    	      list_c[25][1], MoveCursorNextWord_Cmd     },
      { list_c[26][0],    	      list_c[26][1], MoveCursorPreviousWord_Cmd },
      { list_c[27][0],    	      list_c[27][1], MoveCursorBeginLine_Cmd    },
      { list_c[28][0],    	      list_c[28][1], MoveCursorEndLine_Cmd      },
    
      { list_c[30][0],    	      list_c[30][1],   SelectRegion_Cmd           },
    
      { list_c[31][0],    	      list_c[31][1],   SetZoom_Cmd                },
      { list_c[32][0],    	      list_c[32][1],   SetKey_Cmd                 },
      { list_c[33][0],    	      list_c[33][1],   SetCursor_Cmd              },
    
      { list_c[34][0],    	      list_c[34][1],   DocumentOutput_Cmd         },
      { list_c[35][0],    	      list_c[35][1],   WordOutput_Cmd             },
    
      { list_c[36][0],    	      list_c[36][1],   RefreshScreen_Cmd          },
      { list_c[37][0],    	      list_c[37][1],  Debug_Cmd                  },
      { NULL, NULL, NULL }
    };

    вместо того, что было:
    /*
     * List of the new functions.
     */
    
    Papyrus_Cmd baseCommands[] = {
    
      { "AddEntry",               "ae",   AddEntry_Cmd               },
      { "AddFont",                "af",   AddFont_Cmd                },
      { "AddStyle",               "as",   AddStyle_Cmd               },
    
      { "DeleteStyle",            "ds",   DeleteStyle_Cmd            },
    
      { "PapyConfigure",         "ppc",   PapyrusConfigure_Cmd       },
      { "DocConfigure",           "dc",   DocumentConfigure_Cmd      },
      { "ParaConfigure",          "pc",   ParagraphConfigure_Cmd     },
      { "WordConfigure",          "wc",   WordConfigure_Cmd          },
      
      { "PapyQuery",             "ppq",   PapyrusQuery_Cmd           },
      { "DocQuery",               "dq",   DocumentQuery_Cmd          },
      { "ParaQuery",              "pq",   ParagraphQuery_Cmd         },
      { "WordQuery",              "wq",   WordQuery_Cmd              },
    
      { "NewDocument",            "nd",   NewDocument_Cmd            },
      { "NewParagraph",           "np",   NewParagraph_Cmd           },
      { "NewWord",                "nw",   NewWord_Cmd                },
    
      { "CloseDocument",          "cld",   CloseDocument_Cmd          },
    
      { "InsertCharacter",        "ic",   InsertCharacter_Cmd        },
      { "InsertImage",            "ii",   InsertImage_Cmd            },
      { "InsertString",           "is",   InsertString_Cmd           },
      { "DeleteCharacterBefore",  "dcb",  DeleteCharacterBefore_Cmd  },
      { "DeleteCharacterAfter",   "dca",  DeleteCharacterAfter_Cmd   },
    
      { "MoveCursorLeft",         "mcl",  MoveCursorLeft_Cmd         },
      { "MoveCursorRight",        "mcr",  MoveCursorRight_Cmd        },
      { "MoveCursorUp",           "mcu",  MoveCursorUp_Cmd           },
      { "MoveCursorDown",         "mcd",  MoveCursorDown_Cmd         },
      { "MoveCursorNextWord",     "mcnw", MoveCursorNextWord_Cmd     },
      { "MoveCursorPreviousWord", "mcpw", MoveCursorPreviousWord_Cmd },
      { "MoveCursorBeginLine",    "mcbl", MoveCursorBeginLine_Cmd    },
      { "MoveCursorEndLine",      "mcel", MoveCursorEndLine_Cmd      },
      { "MoveCursorXY",           "mcxy", MoveCursorXY_Cmd           },
    
      { "SelectRegion",           "sr",   SelectRegion_Cmd           },
    
      { "SetZoom",                "sz",   SetZoom_Cmd                },
      { "SetKey",                 "sk",   SetKey_Cmd                 },
      { "SetCursor",              "sc",   SetCursor_Cmd              },
    
      { "DocOutput",              "do",   DocumentOutput_Cmd         },
      { "WordOutput",             "wo",   WordOutput_Cmd             },
    
      { "RefreshScreen",          "rs",   RefreshScreen_Cmd          },
      { "Debug",                  "dbg",  Debug_Cmd                  },
      { NULL, NULL, NULL }
    };
  • AkhmedSatajaAkhmedSataja 09.10.2023
    Ну и пару мелочей вроде отсутсвующего заголовка string.h, не ясно почему вываливавшуюся не в ошибку, а в предупреждение вида "бла-бла-бла неявная инциализация функции strcpy".

    Теперь предупреждений у меня осталось только 9 штук из 144, НО только это не помогло.
    Оные:

    tcl/../kernel/shape.h:71: warning: inline function 'virtual const BOOL Shape::can_append() const' used but never defined
    tcl/../kernel/shape.h:72: warning: inline function 'virtual void* Shape::get_absolute_attr(Attributes*, AttrType) const' used but never defined
    tcl/../kernel/shape.h:85: warning: inline function 'virtual char* Shape::get_string() const' used but never defined
    misc/parseAFM.c:103: warning: useless storage class specifier in empty declaration
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscat() is almost always misused, please use wcslcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscpy() is almost always misused, please use wcslcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcat() is almost always misused, please use strlcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcpy() is almost always misused, please use strlcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: sprintf() is often misused, please use snprintf()

    Ошибка в конце сборки:
    Configured with: OpenBSD/i386 system compiler
    Thread model: posix
    gcc version 4.2.1 20070719 
     /usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1/collect2 --eh-frame-hdr -e __start -Bdynamic -dynamic-linker /usr/libexec/ld.so -o bin/papyrus /usr/lib/crt0.o /usr/lib/crtbegin.o -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/X11R6/lib -L/usr/local/lib/tcl/tcl8.6 -L/usr/local/lib -L/usr/dt/lib/ -L/usr/X11R6/lib/ -L/usr/local/lib/tcl/ -L/usr/lib/gcc-lib/i386-unknown-openbsd6.2/4.2.1 -lpcap -lXm -lXmu -lXt -lSM -lICE -lXext -lXpm -lX11 -lX11 -lgcc -lc -lgcc /usr/lib/crtend.o
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscat() is almost always misused, please use wcslcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscpy() is almost always misused, please use wcslcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcat() is almost always misused, please use strlcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcpy() is almost always misused, please use strlcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: sprintf() is often misused, please use snprintf()
    /usr/lib/crt0.o: In function `_start':
    (.text+0x52): undefined reference to `main'
    collect2: ld returned 1 exit status
    *** Error 1 in /home/Sataja/Downloads/Papyrus1.1.1 (Makefile:152 'bin/papyrus')
    $ exit
    
    Script done on Mon Oct  9 06:02:41 2023
  • olegus 09.10.2023
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscat() is almost always misused, please use wcslcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscpy() is almost always misused, please use wcslcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcat() is almost always misused, please use strlcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcpy() is almost always misused, please use strlcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: sprintf() is often misused, please use snprintf()

    Просит замены, wcscat() на wcslcat() и т.д.
    И ещё где находится _start?
    Может ещё разраб своими именами переменных типа "bla-bla-bla" весь код проставил и теперь непонятно что где.

    Про жуткие костыли, это ещё не жуть, у меня в Python такие листы списков были в трёх функциях, и в каждом списке куча переменных была(где-то 5шт.).
  • AkhmedSatajaAkhmedSataja 09.10.2023
    olegus:
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscat() is almost always misused, please use wcslcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: wcscpy() is almost always misused, please use wcslcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcat() is almost always misused, please use strlcat()
    /usr/local/lib/libXm.so.6.1: warning: warning: strcpy() is almost always misused, please use strlcpy()
    /usr/local/lib/libXm.so.6.1: warning: warning: sprintf() is often misused, please use snprintf()

    Просит замены, wcscat() на wcslcat() и т.д.


    Это я понял. Только вот я даже grep'ом искал - нету нигде в коде ни wcscat, ни wcslcat - скорее, всего, это в самом Motif'е проблема, но отражаться то не должно, другие же основанные на Motif приложения работают, ровно, как и сама CDE. Не знаю, насколько это реалистично.

    _start тоже найти не могу. Подозреваю, а не может ли быть, что он просто не в состоянии слинковать функцию main()? Но на то ведь должна же быть причина? Может, проблема в

    warning: inline function 'virtual const BOOL Shape::can_append() const' used but never defined

    и в:

    warning: useless storage class specifier in empty declaration

    Типа, класс имеет пустую инициализацию? Но как? Либо стандарт изменился настолько сильно? Я ничего не понимаю. Не хватает знаний.

    Вообще, меня все больше терзают смутные сомнения, когда я вижу конструкции типа:
    if(...)
      if()
      else

    вместо

    if(/*bla-bla*/){
      if(/*la-la*/){
    
      }
      else{
      /*some code*/
      }
    }
    что это все-таки студенческий проект француза, а не приложение вроде того-же GNU Oleo или GNUmeric.

    Но все равно, буду благодарен за помощь. И, кстати, спасибо за оную.
  • AkhmedSatajaAkhmedSataja 10.10.2023
    Кстати, у Вас архив открылся?
  • olegus 10.10.2023
    Чего-то забыл про него с дистрохопом, думаю останавлюсь на void-cups не работает, antix-звук отваливается, debian-жрет не в себя,ubuntu-видео отваливается, arch-сеть вообщем не до этого.
  • AkhmedSatajaAkhmedSataja 10.10.2023
    Понятно. Я чего только не делал. И extern "C"{} одевал на функцию main и снимал. И пытался без флага -DHAVE_GUI откомпилировать, на что получил кучу ошибок ввиде не найденной библиотеки Xm и забил болт на эту идею, сочтя ее дуратской, и по англоязычным форумам лазил - все бестолку, как писал "неопределленная ссылка на main", так и пишет. Мда.
  • AkhmedSatajaAkhmedSataja 10.10.2023
    Даже думал, может символ каой-то в
    int main(int argc, char*argv[])

    не такой стоит, ан нет.