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

Reply via email to