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

Reply via email to