On Sat, 1 Feb 2003, Max Bowsher wrote: > Igor Pechtchanski wrote: > > On Sat, 1 Feb 2003, Max Bowsher wrote: > >> What advantage do resources give us over string literals, for > >> messages that are only used once in setup? > > > > Resources have the advantage that whole resource tables can be > > substituted at once. If we ever want to internationalize setup, for > > example, all > > that'd be needed is translating the resource file. Having hard-coded > > string constants sprinkled all over the code makes translation > > impossible. Not that anyone has any plans to translate setup any time > > soon... Again, > > I guess it's a question of programming style. > > Fair enough. The thing I *really* hate, is that any change to resource.h, > and you end up recompiling *everything*. > > Anyway... > > I just tried it out, and was told "Check (null) for details". > I don't think you want to call cygpath at all. LogFile::getFile already > returns a Windows path. > (With rather ugly looking mixed slashes. backslash()-ing the path might be > nice. > > One other point - it might be more informative for the fallback text to be > "setup.log.full" rather than "log file". > > Max.
Yes, it does recompile everything when resource.h is modified, but that only happens once. A necessary evil... Sorry about the (null) bit. Should be fixed now. I also took your suggestion regarding "log file". The third iteration of the patch is attached... Incidentally, there are two backslash() functions defined: one in filemanip.h, and another in concat.h. This is the only function defined in concat.h, and it doesn't seem to be used anywhere anymore. Is concat.h dead? Should it be removed? Ditto for concat.cc? Igor ======================================================================== ChangeLog: 2002-10-17 Igor Pechtchanski <[EMAIL PROTECTED]> * res.rc (IDS_INSTALL_INCOMPLETE): Change hard-coded log filename to %s. (IDS_MISSING_LOG): New string resource. * resource.h (IDS_MISSING_LOG): New resource. * LogFile.cc (LogFile::exit): Pass log filename for LOG_BABBLE to note(). (LogFile::getFile): New function. * LogFile.h (LogFile::getFile): New function. -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! Oh, boy, virtual memory! Now I'm gonna make myself a really *big* RAMdisk! -- /usr/games/fortune
Index: LogFile.cc =================================================================== RCS file: /cvs/cygwin-apps/setup/LogFile.cc,v retrieving revision 2.6 diff -u -p -r2.6 LogFile.cc --- LogFile.cc 25 Nov 2002 00:41:24 -0000 2.6 +++ LogFile.cc 1 Feb 2003 20:31:02 -0000 @@ -31,6 +31,8 @@ static const char *cvsid = #include <time.h> #include <string> #include "AntiVirus.h" +#include "filemanip.h" +#include "cistring.h" using namespace std; @@ -101,6 +103,20 @@ LogFile::setFile (int minlevel, String c files.insert (t); } +String +LogFile::getFile (int minlevel) const +{ + for (FileSet::iterator i = files.begin(); + i != files.end(); ++i) + { + if (i->level == minlevel) + return i->key; + } + cistring bad_file; + bad_file.Format(IDS_MISSING_LOG); + return bad_file.c_str(); +} + void LogFile::exit (int const exit_code) { @@ -115,7 +131,7 @@ LogFile::exit (int const exit_code) been_here = 1; if (exit_msg) - note (NULL, exit_msg); + note (NULL, exit_msg, backslash(getFile(LOG_BABBLE)).cstr_oneuse()); log (LOG_TIMESTAMP) << "Ending cygwin install" << endLog; Index: LogFile.h =================================================================== RCS file: /cvs/cygwin-apps/setup/LogFile.h,v retrieving revision 2.3 diff -u -p -r2.3 LogFile.h --- LogFile.h 10 Nov 2002 03:56:05 -0000 2.3 +++ LogFile.h 1 Feb 2003 20:31:02 -0000 @@ -23,6 +23,7 @@ public: LogFile(); void clearFiles(); // delete all target filenames void setFile (int minlevel, String const &path, bool append); + String getFile (int minlevel) const; /* Some platforms don't call destructors. So this call exists * which guarantees to flush any log data... * but doesn't call generic C++ destructors Index: res.rc =================================================================== RCS file: /cvs/cygwin-apps/setup/res.rc,v retrieving revision 2.45 diff -u -p -r2.45 res.rc --- res.rc 19 Jan 2003 20:31:53 -0000 2.45 +++ res.rc 1 Feb 2003 20:31:19 -0000 @@ -483,11 +483,12 @@ BEGIN IDS_DOWNLOAD_FAILED "Unable to download %s" IDS_DOWNLOAD_INCOMPLETE "Download Incomplete. Try again?" IDS_INSTALL_ERROR "Installation error (%s), Continue with other packages?" - IDS_INSTALL_INCOMPLETE "Installation incomplete. Check /setup.log.full for details" + IDS_INSTALL_INCOMPLETE "Installation incomplete. Check %s for details" IDS_VERSION_INFO "Setup.exe version %1" IDS_CYGWIN_SETUP "Cygwin Setup" IDS_CYGWIN_SETUP_WITH_PROGRESS "%1!d!%% - Cygwin Setup" IDS_CORRUPT_PACKAGE "Package file %s has a corrupt local copy, please remove and retry." + IDS_MISSING_LOG "setup.log.full" END #endif // English (U.S.) resources Index: resource.h =================================================================== RCS file: /cvs/cygwin-apps/setup/resource.h,v retrieving revision 2.20 diff -u -p -r2.20 resource.h --- resource.h 19 Jan 2003 20:31:53 -0000 2.20 +++ resource.h 1 Feb 2003 20:31:19 -0000 @@ -120,6 +120,7 @@ #define IDC_DISABLE_AV 1067 #define IDC_LEAVE_AV 1068 #define IDC_CHOOSE_KEEP 1069 +#define IDS_MISSING_LOG 1070 #define IDC_STATIC -1 // Next default values for new objects