Waldek Hebisch <[email protected]> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel