Ignore:
Timestamp:
1999-09-17T09:38:17+12:00 (25 years ago)
Author:
sjboddie
Message:

added some file locking stuff for logging. Windows still needs to
be done.

File:
1 edited

Legend:

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

    r533 r595  
    2828/*
    2929   $Log$
     30   Revision 1.31  1999/09/16 21:38:17  sjboddie
     31   added some file locking stuff for logging. Windows still needs to
     32   be done.
     33
    3034   Revision 1.30  1999/09/07 04:56:58  sjboddie
    3135   added GPL notice
     
    172176#include <assert.h>
    173177#include <time.h>
     178#include <stdio.h>
    174179#include <fstream.h>
    175180
     
    464469    converthere++;
    465470  }
    466 
     471 
    467472  // set default converter if no good one has been defined
    468473  if (!defaultconvertname.empty()) {
    469474    cgiarginfo *ainfo = argsinfo.getarginfo ("w");
    470     if ((ainfo != NULL) && (converters.get_outconverter(ainfo->argdefault) == NULL)) {
    471       ainfo->defaultstatus = cgiarginfo::good;
    472       ainfo->argdefault = defaultconvertname;
    473     }
    474   }
    475  
     475    if (ainfo->argdefault != "w") {
     476      if ((ainfo != NULL) && (converters.get_outconverter(ainfo->argdefault) == NULL)) {
     477    ainfo->defaultstatus = cgiarginfo::good;
     478    ainfo->argdefault = defaultconvertname;
     479      }
     480    }
     481  }
     482
    476483  // init the actions
    477484  actionptrmap::iterator actionhere = actions.begin ();
     
    617624bool receptionist::log_cgi_args (cgiargsclass &args, ostream &logout) {
    618625
    619   utf8outconvertclass text_t2utf8;
    620 
    621626  // see if we want to log the cgi arguments
    622627  if (!configinfo.logcgiargs) return true;
     
    625630  host = getenv("REMOTE_HOST");
    626631  if (host == NULL) host = getenv ("REMOTE_ADDR");
     632  if (host == NULL) host = "";
    627633  char *browser = getenv("HTTP_USER_AGENT");
     634  if (browser == NULL) browser = "";
    628635  time_t ttime = time(NULL);
    629636
     
    642649  text_t logfile = filename_cat (configinfo.gsdlhome, "etc");
    643650  logfile = filename_cat (logfile, "usage.txt");
    644   char *lfile = logfile.getcstr();
    645  
     651
     652  text_t logstr = host;
     653  logstr += " [";
     654  logstr += ttime;
     655  logstr += "] (" + argstr + ") \"";
     656  logstr += browser;
     657  logstr += "\"\n";
     658
     659  return append_logstr (logfile, logstr, logout);
     660}
     661
     662bool receptionist::append_logstr (const text_t &filename, const text_t &logstr,
     663                  ostream &logout) {
     664
     665  utf8outconvertclass text_t2utf8;
     666  char *lfile = filename.getcstr();
    646667  ofstream log (lfile, ios::app);
    647668 
     
    650671    delete lfile;
    651672    return false;
    652   }
    653 
    654   log << text_t2utf8 << host << " [" << ttime
    655       << "] (" << argstr << ") \"" << browser << "\"\n";
    656    
     673  }
     674
     675  int fd = log.filedesc();
     676  // lock_val is set to 0 if file is locked successfully
     677  int lock_val = 1;
     678  WRITELOCK_FILE (fd);
     679  if (lock_val == 0) {
     680    log << text_t2utf8 << logstr;
     681    UNLOCK_FILE (fd);
     682  } else
     683    logout << "Error: Couldn't lock file " << lfile << "\n";
     684
    657685  log.close();
    658686       
Note: See TracChangeset for help on using the changeset viewer.