Waldek Hebisch <hebi...@math.uni.wroc.pl> writes: > Aleksej Saushev wrote: >> >> I need this for both, FriCAS and OpenAxiom, to build last released versions, >> I also think it is good idea anyway: >> >> $NetBSD: patch-ab,v 1.1 2009/12/15 23:36:29 asau Exp $ >> >> Reuse strcmp to simplify logic and fix build. >> Shared between FriCAS and OpenAxiom. >> >> --- src/hyper/addfile.c.orig 2009-07-10 00:50:28.000000000 +0400 >> +++ src/hyper/addfile.c 2009-12-15 22:32:55.000000000 +0300 >> @@ -50,13 +50,7 @@ >> strpostfix(char *s, char *t) >> { >> int slen = strlen(s), tlen = strlen(t); >> - >> - if (tlen > slen) >> - return 0; >> - while (tlen > 0) >> - if (s[--slen] != t[--tlen]) >> - return 0; >> - return 1; >> + return (tlen < slen) && !strcmp(s+slen-tlen, t); >> } >> >> /* extend_ht : just checks the name and adds a .ht if needed */ >> > > This simplifies the code, so is worth applying anyway, but what > problem did you have with build? AFAICS both the original > and new version may have trouble with strings having length > bigger than allowed in int, but we are not going to use it > for such strings...
Yes, ideally it should be rewritten to utilize PATH_MAX, strlcpy/strlcat and all. If you wish, I can revisit it and rewrite "htadd" to my taste. The problem manifests this way (OpenAxiom, but FriCAS behaves similarly): making ../../i486--netbsdelf/share/hypertex/pages from ../../src/pages directory for f in `ls "../../i486--netbsdelf/share/hypertex"/pages/*.ht "../../i486--netbsdelf/share/hypertex"/pages/*.pht`; do \ AXIOM="../../i486--netbsdelf" ../../i486--netbsdelf/lib/htadd -s $f || exit 1; done ht_file_open: Unknown file ../../i486--netbsdelf/share/hypertex/pages/ALIST.ht.ht Note ".ht.ht" suffix. I didn't analyze details, I just replaced it with simpler and more comprehensible (in my opinion) code. Originally the diff was this: --- src/hyper/addfile.c.orig 2009-07-10 00:50:28.000000000 +0400 +++ src/hyper/addfile.c 2009-12-15 22:32:55.000000000 +0300 @@ -50,13 +50,7 @@ strpostfix(char *s, char *t) { int slen = strlen(s), tlen = strlen(t); - - if (tlen > slen) - return 0; - while (tlen > 0) - if (s[--slen] != t[--tlen]) - return 0; - return 1; + return (tlen < slen) && !strcmp(s+slen-tlen, t); } /* extend_ht : just checks the name and adds a .ht if needed */ @@ -141,7 +135,7 @@ } else {/** If not I am going to have to append path names to it **/ HTPATH = (char *) getenv("HTPATH"); - if (HTPATH == NULL) { + if (HTPATH == NULL || *HTPATH == '\0') { /** The user does not have a HTPATH, so I will use the the directory $AXIOM/share/hypertex/pages/ as the default path ***/ char *spad = (char *) getenv("AXIOM"); @@ -182,11 +176,7 @@ static int pathname(char *name) { - while (*name) - if (*name++ == '/') - return 1; - - return 0; + return strchr(name, '/') != NULL; } /** This procedure opens the proper HT file **/ -- HE CE3OH... ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ open-axiom-devel mailing list open-axiom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open-axiom-devel