Vlada,
In updating my local Certificate Wizard fork to be based off 0.3b, I
observed an issue introduced during your cleanup of my CopyOneFile
function.
My original code:
snprintf(buffer, MAXLINELEN, "Unable to copy \"%s\" to \"%s\" - error %d:
%%s", source, target, errorCode);
DisplayErrorToUser(errorCode, "Failure copying files", buffer);
Your replacement code:
snprintf(buffer, MAXLINELEN, _("Unable to copy '%s' to '%s' - error %d",
0), source, target, errorCode);
strcat(buffer, ": %%s");
DisplayErrorToUser(errorCode, _("Failure copying files", 0), buffer);
These aren't functionally equivalent: The latter results in a literal
'%s' being displayed to the user, whereas the former displays a textual
description of the error message being substituted for the %s (which
snprintf replaces %%s with) inside DisplayErrorToUser. Either the strcat
should only append '%s' rather than '%%s', or '%%s' should be used in
the snprintf (which is the approach I prefer -- but perhaps it
interferes with the internationalization or somesuch?).
Additionally, I noticed a bug from my original code that you inherited:
in DisplayErrorToUser, the MsgBox call should take the description
parameter (rather than a hardcoded string) as its argument.
The sum of non-site-specific changes I've made comes to the following:
diff -ru mycert-src-0.3b.orig/misc.c mycert-src-0.3b.recare/misc.c
--- mycert-src-0.3b.orig/misc.c 2004-11-09 10:02:44.0 -0600
+++ mycert-src-0.3b.recare/misc.c 2004-11-12 19:38:27.0 -0600
@@ -232,7 +232,7 @@
0, NULL);
strncpy(msgBuf, lpMsgBuf, MAXLINELEN);
- MsgBox(_("Failure copying files", 0), MB_OK, fmt, msgBuf);
+ MsgBox(description, MB_OK, fmt, msgBuf);
LocalFree(lpMsgBuf);
}
@@ -242,8 +242,7 @@
char buffer[MAXLINELEN+1];
int errorCode = GetLastError();
- snprintf(buffer, MAXLINELEN, _("Unable to copy '%s' to '%s' -
error %d", 0), source, target, errorCode);
- strcat(buffer, ": %%s");
+ snprintf(buffer, MAXLINELEN, _("Unable to copy '%s' to '%s' -
error %d: %%s", 0), source, target, errorCode);
DisplayErrorToUser(errorCode, _("Failure copying files", 0),
buffer);
return FALSE;
}
--- mycert-src-0.3b.orig/mycert.ini 2004-11-09 10:02:44.0 -0600
+++ mycert-src-0.3b.recare/mycert.ini 2004-11-12 19:51:45.0 -0600
@@ -299,7 +308,7 @@
#Filename: %s=
#(Cannot read the file.)=
#Failure copying files=
-#Unable to copy '%s' to '%s' - error %d=
+#Unable to copy '%s' to '%s' - error %d: %%s=
#Warning=
(For the record, since this is a public forum: while "recare" is
mentioned in this message, my employer's name is Catalis Health -- we
changed it recently because ECARE sued us. If you're an employee of
ECARE, don't worry, we really are complying).