Changeset 4233


Ignore:
Timestamp:
2003-05-07T15:50:13+12:00 (21 years ago)
Author:
jrm21
Message:

print out better error messages when one of the perl scripts goes wrong,
rather than the default "oops..." message which is very uninformative

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/recpt/langaction.cpp

    r4124 r4233  
    216216  }
    217217
     218  // overwrite the global content (which should be overwritten by package)
     219  // makes it obvious that package macros aren't defined, compared to "oops..."
     220  disp.setmacro("content", "Global", "\\_translang:content\\_");
     221
    218222  // Make sure the source and target languages are different!
    219223  if (sourcelang == targetlang) {
     
    265269    //calls the translator file to create HTML files
    266270    cmd = "perl " + filename_cat(gsdlhome, "bin", "script", "translator.pl") + " " + sourcelang + " " + targetlang;
    267     if ((gsdl_system(cmd, true, logout)) != 0) {
     271    int ret=gsdl_system(cmd, true, logout);
     272    if (ret != 0) {
     273      ret = ret >> 8;
     274      text_t errmsg="<H1>Error</H1>\nrunning translator.pl: ";
     275      if (ret==1) errmsg += "GSDLHOME unset";
     276      else if (ret==2) errmsg += "missing arguments";
     277      else if (ret==3) errmsg += "translation not yet initialised";
     278      else if (ret==4) errmsg += "no source macro found";
     279      errmsg+= " (error " + text_t(ret) + ")\n";
     280      disp.setmacro("content", "translang", errmsg);
    268281      logout << "Process " << cmd << " did not execute.../;-D\n";
    269282      return;
     
    305318    cmd = "perl " + filename_cat(gsdlhome, "bin", "script", "picklanguage.pl");
    306319    logout << cmd << endl;
    307     if(gsdl_system(cmd,true,logout) != 0)
     320    int ret=gsdl_system(cmd,true,logout);
     321    if (ret != 0) { // determine error
     322      /*
     323    // ret=-1 => we couldn't run the script.
     324    // ret=1 => GSDLHOME not set.
     325    // >=2 implies some file IO error:
     326    // ret=2 => can't read etc/main.cfg
     327    // ret=3 => "can't create directory $GSDLHOME/tmp/lang/
     328    // ret=4 => can't write $dir/picklanguage.lang
     329      **/
     330      // maybe this should be a "real" macro for translation?!
     331      text_t errmsg="<H1>Error</H1>\nPermissions problem: picklanguage.pl failed ";
     332
     333      ret = ret >> 8; // man perlfunc for the reason for this
     334      if (ret==255) errmsg+="running script";
     335      else if (ret==1) errmsg+="GSDLHOME not set";
     336      else if (ret==2) errmsg+="reading etc/main.cfg";
     337      else if (ret==3) errmsg+="creating tmp/lang/";
     338      else if (ret==4) errmsg+="writing picklanguage.lang";
     339      errmsg += " (error="; errmsg += text_t(ret); errmsg += ")";
     340      disp.setmacro("content", "translang", errmsg);
     341
    308342      return;
     343    }
    309344    define_webpage(disp, sourcelang, targetlang, dir, page, -1, false, logout);
    310345    return;
     
    317352  // Check file opened OK
    318353  if (!numpagesfile) {
    319     logout << "Error: File " << numpagesfilepath << " could not be opened." << endl;
     354    text_t errmsg="Error: File " + numpagesfilepath + " could not be opened.";
     355    logout << errmsg << endl;
     356    disp.setmacro("content", "translang", errmsg);
    320357    return;
    321358  }
Note: See TracChangeset for help on using the changeset viewer.