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

  • olegus 13.10.2023
    Все что имеет "486" и связано с 32x архитектурами. Например "-m486". Да и Linux в те времена был более Unix'овый.
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Методом тыка удалось выяснить, что при загрузке скрипта "papyrus-inti.tcl" ошибка возникает при попытке загрузить "papyrus-menus.tcl".
  • olegus 13.10.2023
    Да уж, закончился ад с плюсами, начался с Tcl. Это хорошо что у вас CDE на Motif, а что было бы с Windowmaker,IceWM, LXDE, XFCE и т.п.? Была бы возня ещё с Motif...
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Далеко не факт, что возня с плюсами закончилась - скрипт спотыкается на функции AddStyle и тут либо оная в commandsAM.cc не работает правильно, либо со шрифтами проблема, вот только в xlsfonts есть прописанные там шрифты, так что не факт.
  • olegus 13.10.2023
    Тут появилась мысль, написать свой редактор с нуля... Так как сложность только растет((( А PAPyRUS вообще какие форматы поддерживает? Т.к. после его выпуска появились форматы docx, xlsx,pptx, open document. Оно того стоит?
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Написать свой редактор с нуля, да еще на Motif - не потяну, мне мозгов не хватит, к тому же, есть XEmacs и emacs. А тут лучше попытаться исправить старый. Насчет форматов, как гласит READMY.english, там не густо:
    - save formats (ASCII, PostScript, Specific PAPyRUS

    Не знаю, получится ли потом добавить хоть один, да и имеет ли это смысл.

    Кстати, не подскажите, а вот это нормально? Он сыпется как раз на данной функции, написанной в файле tclGet.cc, в "int Tcl_GetFont(Tcl_Interp *interp, char *string, FontItem *&fiPtr) {":
    free((char *)argsPtr);

    Велика вероятность, блин, я уже боюсь этих слов, что именно это вызывает ошибку bogus pointer, а в тот раз, когда я указал другой путь, я просто ошибся в его написании, и PAPyRUS не нашел скриптов, ему не с чего было загружать шрифты, и он просто не зайдействовал данную функцию?
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Что-то меня здесь смущает:
    int
    Tcl_GetFont(Tcl_Interp *interp, char *string, FontItem *&fiPtr) {
    
      char **argsPtr;
      int numArgs, size;
      FontStyle style;
    
      if( Tcl_SplitList(interp, string, &numArgs, &argsPtr) != TCL_OK )
        return TCL_ERROR;    
      
      if( numArgs != 3 ) {
        Tcl_AppendResult(interp, "Error: bad font format "", string,
    		     "": must be { family style size }",
    		     (char *)NULL);
        return TCL_ERROR;
      }
      
      if( Tcl_GetFontStyle(interp, argsPtr[1], style) != TCL_OK )
        return TCL_ERROR;
      
      if( Tcl_GetInt(interp, argsPtr[2], &size) != TCL_OK )
        return TCL_ERROR;
      
      fiPtr = papyrus->get_font(argsPtr[0], style, size);
      
      if( fiPtr == NULL ) {
        char str[64];
        sprintf(str, "Error: font "%s-%s-%d" doesn't exit\n",
    	    argsPtr[0], FontStyle_to_String(style), size);
        Tcl_AppendResult(interp, str, (char *)NULL);
        return TCL_ERROR;
      }
      
      free((char *)argsPtr);
    
      return TCL_OK;
    }

    То есть, Карлос создал char **argsPtr, [то есть, хм, двойной указатель типа char?] затем преобразовал его в char*, и это преобразованное очистил?

    И так у него, как минимум, в следующих функциях:

    int Tcl_GetMargins(Tcl_Interp *interp, char *string, int intPtr[]) ;
    int Tcl_GetFont(Tcl_Interp *interp, char *string, FontItem *&fiPtr);
  • AkhmedSatajaAkhmedSataja 13.10.2023
    olegus:
    Оно того стоит?

    В этом деле некромантии главное успеть до конца отпуска.
  • olegus 14.10.2023
    AkhmedSataja:
    Что-то меня здесь смущает:
    int
    Tcl_GetFont(Tcl_Interp *interp, char *string, FontItem *&fiPtr) {
    
      char **argsPtr;
      int numArgs, size;
      FontStyle style;
    
      if( Tcl_SplitList(interp, string, &numArgs, &argsPtr) != TCL_OK )
        return TCL_ERROR;    
      
      if( numArgs != 3 ) {
        Tcl_AppendResult(interp, "Error: bad font format "", string,
    		     "": must be { family style size }",
    		     (char *)NULL);
        return TCL_ERROR;
      }
      
      if( Tcl_GetFontStyle(interp, argsPtr[1], style) != TCL_OK )
        return TCL_ERROR;
      
      if( Tcl_GetInt(interp, argsPtr[2], &size) != TCL_OK )
        return TCL_ERROR;
      
      fiPtr = papyrus->get_font(argsPtr[0], style, size);
      
      if( fiPtr == NULL ) {
        char str[64];
        sprintf(str, "Error: font "%s-%s-%d" doesn't exit\n",
    	    argsPtr[0], FontStyle_to_String(style), size);
        Tcl_AppendResult(interp, str, (char *)NULL);
        return TCL_ERROR;
      }
      
      free((char *)argsPtr);
    
      return TCL_OK;
    }

    То есть, Карлос создал char **argsPtr, [то есть, хм, двойной указатель типа char?] затем преобразовал его в char*, и это преобразованное очистил?

    И так у него, как минимум, в следующих функциях:

    int Tcl_GetMargins(Tcl_Interp *interp, char *string, int intPtr[]) ;
    int Tcl_GetFont(Tcl_Interp *interp, char *string, FontItem *&fiPtr);

    Да, двойной указатель char.

    FontStyle style. Хм. А есть класс который отвечает за FontStyle?
  • AkhmedSatajaAkhmedSataja 14.10.2023
    Перечисление есть, в файле /kernel/FontManager/fontFamily.h:

    typedef enum {NORMAL, BOLD, ITALIC, BOLD_ITALIC} FontStyle;