Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: Re: zrecompile
- X-seq: zsh-workers 10502
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: PATCH: Re: zrecompile
- Date: Wed, 5 Apr 2000 11:08:20 +0200 (MET DST)
- In-reply-to: Sven Wischnowsky's message of Tue, 4 Apr 2000 16:43:05 +0200 (MET DST)
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
I wrote:
> Bart Schaefer wrote:
>
> > ...
> >
> > Having thought about it a bit longer now, I have a suggestion: Put *both*
> > a .zwc version number *and* $ZSH_VERSION into the header. When the .zwc
> > version doesn't match, display the $ZSH_VERSION string in the error output.
> > That completely hides the .zwc version from anyone who would be confused
> > by it, while avoiding the need to recompile when the shell is upgraded.
>
> Wouldn't that be rather confusing? I mean: for some reason we have to
> change the zwc-version, but the ZSH_VERSION is still the same. The shell
> can't load an old zwc file and says: `wrong version (...)' where `...'
> is the same as $ZSH_VERSION.
>
> This would only affect people upgrading their shell between releases,
> though... hm.
Because of that last one I could convince myself to make this
change. So, zwc files now use their magic number as the
zwc-file-version to compare. The zsh version is used to report version
mismatches.
Bye
Sven
Index: Src/parse.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/parse.c,v
retrieving revision 1.3
diff -u -r1.3 parse.c
--- Src/parse.c 2000/04/04 14:08:56 1.3
+++ Src/parse.c 2000/04/05 09:05:03
@@ -2197,7 +2197,10 @@
* the version string in a field of 40 characters and the descriptions
* for the functions in the dump file.
*
- * NOTE: this layout has to be kept; everything after it may be changed.
+ * NOTES:
+ * - This layout has to be kept; everything after it may be changed.
+ * - When incompatible changes are made, the FD_MAGIC and FD_OMAGIC
+ * numbers have to be changed.
*
* Each description consists of a struct fdhead followed by the name,
* aligned to sizeof(wordcode) (i.e. 4 bytes).
@@ -2358,11 +2361,17 @@
}
if (read(fd, buf, (FD_PRELEN + 1) * sizeof(wordcode)) !=
((FD_PRELEN + 1) * sizeof(wordcode)) ||
- (fdmagic(buf) != FD_MAGIC && fdmagic(buf) != FD_OMAGIC) ||
- (v = strcmp(ZSH_VERSION, fdversion(buf)))) {
- if (err)
- zwarnnam(nam, (v ? "invalid zwc file, wrong version: %s" :
- "invalid zwc file: %s") , name, 0);
+ (v = (fdmagic(buf) != FD_MAGIC && fdmagic(buf) != FD_OMAGIC))) {
+ if (err) {
+ if (v) {
+ char msg[80];
+
+ sprintf(msg, "zwc file has wrong version (zsh-%s): %%s",
+ fdversion(buf));
+ zwarnnam(nam, msg , name, 0);
+ } else
+ zwarnnam(nam, "invalid zwc file: %s" , name, 0);
+ }
close(fd);
return NULL;
} else {
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author