Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: PATCH: AIX .export files



Oliver Kiddle wrote:

> I've also attached a patch to the .export files for compiling on AIX.

I've looked through them and moved some of symbols around and removed
some duplicates. The patch also moves `printfmt()' to `zle_tricky.c',
it's still used there, sorry for this.

> I'm not sure that all the symbols are in the right file as some shared
> objects link against more than one shared object so I didn't know where
> the unresolved symbols came from. I had a brief look at how perl handles
> the AIX export files. It seems to generate them automatically from .h
> files. Can we do something like this with our .h and .pro files?

I wished we could... dunno if I find the time to see how. And of
course I wouldn't be able to test it.

> Anyway, the new zsh seg faulted every time I pressed tab to complete. I
> recompiled it with -g to try to find out why but compiled with -g it
> didn't seg fault. Maybe the problem was my piece-by-piece build as I
> constructed the .export files from the ld error messages.

Hm, I sometimes got segfaults when I had forgotten to remove `static', 
maybe under AIX a wrong `.xport' file can do the same.


Please, could you try it with the patch below?

Bye
 Sven

diff -u -r oldsrc/Zle/complete.export Src/Zle/complete.export
--- oldsrc/Zle/complete.export	Fri Nov  5 09:00:48 1999
+++ Src/Zle/complete.export	Fri Nov  5 10:03:42 1999
@@ -1,29 +1,16 @@
 #!
 accept_last
 addexpl
-addzlefunction
 add_bmatchers
 add_match_data
 allccs
 amatches
 asklist
-autoq
 begcmgroup
-bindkey
 bmatchers
-brbeg
-brend
 calclist
 check_param
-clearflag
-clearlist
-clearscreen
-clwnum
-clwords
-clwpos
-clwsize
 cmatcher
-cmdstr
 compcurrent
 compheap
 compisuffix
@@ -40,87 +27,46 @@
 cpcmatcher
 ctokenize
 curexpl
-deletezlefunction
 do_menucmp
 do_single
-dupbrinfo
-dupstrspace
 endcmgroup
-fixsuffix
-foredel
-freebrinfo
 freecmatcher
 freematches
-getkeycmd
 get_user_var
 hasmatched
 hasoldlist
 haspattern
+hasperm
 ignore_prefix
 ignore_suffix
-inbackt
-incompctlfunc
-incompfunc
-instring
-insubscr
 invalidate_list
 ipre
 ispar
 ispattern
 isuf
 keypm
-lastambig
-lastbrbeg
-lastbrend
 lastlmatches
 lastmatches
 linkkeymap
-linredir
 linwhat
 listdat
-listshown
+lmatches
 matchers
 matches
 menuacc
-menucmp
-menucomplete
 mflags
 minfo
 mnum
 mstack
-nbrbeg
-nbrend
-newkeymap
-nlnct
 nmatches
-offs
 onlyexpl
 parse_cmatcher
-pfxlen
 pmatches
-printfmt
 printlist
-qipre
-qisuf
-redisplay
-refthingy
 rembslash
 restrict_range
-reversemenucomplete
 ripre
-selectlocalmap
 set_gmatcher
 set_list_array
-showinglist
-spaceinline
-thingies
-thingytab
-ungetkeycmd
-unlinkkeymap
 update_bmatchers
-usemenu
-validlist
-wb
-we
-zlenoargs
-zrefresh
+ztat
diff -u -r oldsrc/Zle/compresult.c Src/Zle/compresult.c
--- oldsrc/Zle/compresult.c	Fri Nov  5 09:01:22 1999
+++ Src/Zle/compresult.c	Fri Nov  5 09:54:07 1999
@@ -1124,116 +1124,6 @@
     onlyexpl = (v && strstr(v, "expl"));
 }
 
-/* This is used to print the explanation string. *
- * It returns the number of lines printed.       */
-
-/**/
-int
-printfmt(char *fmt, int n, int dopr, int doesc)
-{
-    char *p = fmt, nc[DIGBUFSIZE];
-    int l = 0, cc = 0, b = 0, s = 0, u = 0, m;
-
-    for (; *p; p++) {
-	/* Handle the `%' stuff (%% == %, %n == <number of matches>). */
-	if (doesc && *p == '%') {
-	    if (*++p) {
-		m = 0;
-		switch (*p) {
-		case '%':
-		    if (dopr)
-			putc('%', shout);
-		    cc++;
-		    break;
-		case 'n':
-		    sprintf(nc, "%d", n);
-		    if (dopr)
-			fprintf(shout, nc);
-		    cc += strlen(nc);
-		    break;
-		case 'B':
-		    b = 1;
-		    if (dopr)
-			tcout(TCBOLDFACEBEG);
-		    break;
-		case 'b':
-		    b = 0; m = 1;
-		    if (dopr)
-			tcout(TCALLATTRSOFF);
-		    break;
-		case 'S':
-		    s = 1;
-		    if (dopr)
-			tcout(TCSTANDOUTBEG);
-		    break;
-		case 's':
-		    s = 0; m = 1;
-		    if (dopr)
-			tcout(TCSTANDOUTEND);
-		    break;
-		case 'U':
-		    u = 1;
-		    if (dopr)
-			tcout(TCUNDERLINEBEG);
-		    break;
-		case 'u':
-		    u = 0; m = 1;
-		    if (dopr)
-			tcout(TCUNDERLINEEND);
-		    break;
-		case '{':
-		    for (p++; *p && (*p != '%' || p[1] != '}'); p++, cc++)
-			if (dopr)
-			    putc(*p, shout);
-		    if (*p)
-			p++;
-		    else
-			p--;
-		    break;
-		}
-		if (dopr && m) {
-		    if (b)
-			tcout(TCBOLDFACEBEG);
-		    if (s)
-			tcout(TCSTANDOUTBEG);
-		    if (u)
-			tcout(TCUNDERLINEBEG);
-		}
-	    } else
-		break;
-	} else {
-	    cc++;
-	    if (*p == '\n') {
-		if (dopr) {
-		    if (tccan(TCCLEAREOL))
-			tcout(TCCLEAREOL);
-		    else {
-			int s = columns - 1 - (cc % columns);
-
-			while (s-- > 0)
-			    putc(' ', shout);
-		    }
-		}
-		l += 1 + (cc / columns);
-		cc = 0;
-	    }
-	    if (dopr)
-		putc(*p, shout);
-	}
-    }
-    if (dopr) {
-	if (tccan(TCCLEAREOL))
-	    tcout(TCCLEAREOL);
-	else {
-	    int s = columns - 1 - (cc % columns);
-
-	    while (s-- > 0)
-		putc(' ', shout);
-	}
-    }
-    return l + (cc / columns);
-}
-
 /* This skips over matches that are not to be listed. */
 
 /**/
diff -u -r oldsrc/Zle/zle.export Src/Zle/zle.export
--- oldsrc/Zle/zle.export	Fri Nov  5 09:00:48 1999
+++ Src/Zle/zle.export	Fri Nov  5 10:03:43 1999
@@ -1,8 +1,6 @@
 #!
 acceptlast
 addzlefunction
-amatches
-asklist
 autoq
 backdel
 backkill
@@ -10,7 +8,6 @@
 bindkey
 brbeg
 brend
-calclist
 cfargs
 cfret
 clearflag
@@ -23,32 +20,29 @@
 compfunc
 compwidget
 deletezlefunction
-do_menucmp
-do_single
+dupbrinfo
 dupstrspace
 fixsuffix
 foredel
 forekill
-freematches
+freebrinfo
 getkey
 getkeycmd
 getzlequery
 hascompmod
-hasoldlist
-hasperm
 inbackt
+incompctlfunc
 incompfunc
 instring
 inststrlen
 insubscr
 invalidatelist
 iremovesuffix
+keymapnamtab
 lastambig
 lastbrbeg
 lastbrend
 lastcmd
-lastlmatches
-lastmatches
 lastpostbr
 lastprebr
 lbindk
@@ -56,32 +50,24 @@
 lincmd
 linkkeymap
 linredir
-listdat
 listshown
-lmatches
 makeparamsuffix
 makesuffix
 makesuffixstr
 makezleparams
-menuacc
 menucmp
 menucomplete
 metafy_line
-minfo
 nbrbeg
 nbrend
 newkeymap
 nlnct
-nmatches
 offs
-onlyexpl
 origcs
 origline
 origll
 pfxlen
-pmatches
 printfmt
-printlist
 qipre
 qisuf
 rdstr
@@ -91,10 +77,8 @@
 selectlocalmap
 showagain
 showinglist
-skipnolist
 spaceinline
 strbpcmp
-strbpcmp
 suffixlen
 tcmultout
 tcout
@@ -115,4 +99,3 @@
 zmod
 zrefresh
 zsetterm
-ztat
diff -u -r oldsrc/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- oldsrc/Zle/zle_tricky.c	Fri Nov  5 09:01:23 1999
+++ Src/Zle/zle_tricky.c	Fri Nov  5 09:54:34 1999
@@ -1739,6 +1739,116 @@
     return (int)(*a - *b);
 }
 
+/* This is used to print the strings (e.g. explanations). *
+ * It returns the number of lines printed.       */
+
+/**/
+int
+printfmt(char *fmt, int n, int dopr, int doesc)
+{
+    char *p = fmt, nc[DIGBUFSIZE];
+    int l = 0, cc = 0, b = 0, s = 0, u = 0, m;
+
+    for (; *p; p++) {
+	/* Handle the `%' stuff (%% == %, %n == <number of matches>). */
+	if (doesc && *p == '%') {
+	    if (*++p) {
+		m = 0;
+		switch (*p) {
+		case '%':
+		    if (dopr)
+			putc('%', shout);
+		    cc++;
+		    break;
+		case 'n':
+		    sprintf(nc, "%d", n);
+		    if (dopr)
+			fprintf(shout, nc);
+		    cc += strlen(nc);
+		    break;
+		case 'B':
+		    b = 1;
+		    if (dopr)
+			tcout(TCBOLDFACEBEG);
+		    break;
+		case 'b':
+		    b = 0; m = 1;
+		    if (dopr)
+			tcout(TCALLATTRSOFF);
+		    break;
+		case 'S':
+		    s = 1;
+		    if (dopr)
+			tcout(TCSTANDOUTBEG);
+		    break;
+		case 's':
+		    s = 0; m = 1;
+		    if (dopr)
+			tcout(TCSTANDOUTEND);
+		    break;
+		case 'U':
+		    u = 1;
+		    if (dopr)
+			tcout(TCUNDERLINEBEG);
+		    break;
+		case 'u':
+		    u = 0; m = 1;
+		    if (dopr)
+			tcout(TCUNDERLINEEND);
+		    break;
+		case '{':
+		    for (p++; *p && (*p != '%' || p[1] != '}'); p++, cc++)
+			if (dopr)
+			    putc(*p, shout);
+		    if (*p)
+			p++;
+		    else
+			p--;
+		    break;
+		}
+		if (dopr && m) {
+		    if (b)
+			tcout(TCBOLDFACEBEG);
+		    if (s)
+			tcout(TCSTANDOUTBEG);
+		    if (u)
+			tcout(TCUNDERLINEBEG);
+		}
+	    } else
+		break;
+	} else {
+	    cc++;
+	    if (*p == '\n') {
+		if (dopr) {
+		    if (tccan(TCCLEAREOL))
+			tcout(TCCLEAREOL);
+		    else {
+			int s = columns - 1 - (cc % columns);
+
+			while (s-- > 0)
+			    putc(' ', shout);
+		    }
+		}
+		l += 1 + (cc / columns);
+		cc = 0;
+	    }
+	    if (dopr)
+		putc(*p, shout);
+	}
+    }
+    if (dopr) {
+	if (tccan(TCCLEAREOL))
+	    tcout(TCCLEAREOL);
+	else {
+	    int s = columns - 1 - (cc % columns);
+
+	    while (s-- > 0)
+		putc(' ', shout);
+	}
+    }
+    return l + (cc / columns);
+}
+
 /* This is used to print expansions. */
 
 /**/
diff -u -r oldsrc/zsh.export Src/zsh.export
--- oldsrc/zsh.export	Fri Nov  5 09:00:37 1999
+++ Src/zsh.export	Fri Nov  5 09:04:28 1999
@@ -1,4 +1,5 @@
 #!
+SHTTY
 addbuiltins
 addconddefs
 addedx
@@ -145,7 +146,6 @@
 inwhat
 isfirstln
 jobtab
-keymapnamtab
 lastpid
 lastval
 lchdir
@@ -200,7 +200,6 @@
 ppid
 prefork
 prepromptfns
-printfmt
 printif
 printparamnode
 printqt

--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author