about summary refs log tree commit diff
path: root/manual
diff options
context:
space:
mode:
Diffstat (limited to 'manual')
-rw-r--r--manual/Makefile12
-rw-r--r--manual/users.texi2
-rw-r--r--manual/xtract-typefun.awk43
3 files changed, 35 insertions, 22 deletions
diff --git a/manual/Makefile b/manual/Makefile
index e4efe73ae5..d4c33e68a9 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -21,8 +21,6 @@
 subdir := manual
 export subdir := $(subdir)
 
-# We need GNU awk for the xtract-typefun script.
-GAWK = gawk
 # Allow override
 INSTALL_INFO = install-info
 
@@ -62,7 +60,7 @@ chapters-incl := $(chapters-incl1) $(chapters-incl2)
 
 define find-includes
 (echo '$(@F) :=' \\	;\
- awk '$$1 == "@include" { print $$2 " \\" }' $^) > $@.new
+ $(AWK) '$$1 == "@include" { print $$2 " \\" }' $^) > $@.new
 mv -f $@.new $@
 endef
 
@@ -78,7 +76,7 @@ libc.dvi: texinfo.tex
 # Generate the summary from the Texinfo source files for each chapter.
 summary.texi: stamp-summary ;
 stamp-summary: summary.awk $(chapters) $(chapters-incl)
-	awk -f $^ \
+	$(AWK) -f $^ \
 	| sort -df +1 -2 | tr '\014' '\012' > summary-tmp
 	./move-if-change summary-tmp summary.texi
 # touch is broken on our machines.  Sigh.
@@ -88,10 +86,10 @@ stamp-summary: summary.awk $(chapters) $(chapters-incl)
 # access to the documentation of the function, variables, and other
 # definitions.
 dir-add.texinfo: xtract-typefun.awk $(chapters) $(chapters-incl)
-	(echo "@dircategory GNU C library functions";			\
+	$(SHELL) -c '(echo "@dircategory GNU C library functions";	\
 	 echo "@direntry";						\
-	 $(GAWK) -f $^ | sort;						\
-	 echo "@end direntry";) > $@.new
+	 $(AWK) -f $^;							\
+	 echo "@end direntry";)' > $@.new
 	mv -f $@.new $@
 
 # Generate Texinfo files from the C source for the example programs.
diff --git a/manual/users.texi b/manual/users.texi
index 5ee2e64deb..d2b3b8de76 100644
--- a/manual/users.texi
+++ b/manual/users.texi
@@ -289,7 +289,7 @@ include the header files @file{sys/types.h} and @file{unistd.h}.
 
 @comment unistd.h
 @comment POSIX.1
-@deftypefun int seteuid(uid_t @var{neweuid})
+@deftypefun int seteuid (uid_t @var{neweuid})
 This function sets the effective user ID of a process to @var{newuid},
 provided that the process is allowed to change its effective user ID.  A
 privileged process (effective user ID zero) can change its effective
diff --git a/manual/xtract-typefun.awk b/manual/xtract-typefun.awk
index 2f0bbc748e..3fccd8000e 100644
--- a/manual/xtract-typefun.awk
+++ b/manual/xtract-typefun.awk
@@ -4,23 +4,38 @@ BEGIN {
 }
 
 /^@node/ {
-  last_node = gensub (/@node +([^@,]+).*/, "\\1", 1);
+  name = $0;
+  sub(/^@node +/, "", name);
+  sub(/[@,].*$/, "", name);
+  last_node = name;
 }
 
-/^@deftypefun/ {
-  printf ("* %s: (libc)%s.\n",
-	  gensub (/@deftypefunx? +([^{ ]+|\{[^}]+\}) +([[:alpha:]_][[:alnum:]_]*).*/, "\\2", 1),
-    last_node);
-}
+/^@deftype(fn|vr)/ {
+# The string we want is $4, except that if there were brace blocks
+# before that point then it gets shifted to the right, since awk
+# doesn't know from brace blocks.
+  id = 4; check = 2; squig = 0;
+  while(check < id)
+  {
+    if($check ~ /{/) squig++;
+    if($check ~ /}/) squig--;
+    if(squig) id++;
+    check++;
+  }
 
-/^@deftypevr/ {
-  printf ("* %s: (libc)%s.\n",
-	  gensub (/@deftypevrx? +([^{ ]+|\{[^}]+\}) +([^{ ]+|\{[^}]+\}) +([[:alpha:]_][[:alnum:]_]*).*/, "\\3", 1),
-    last_node);
+  printf ("* %s: (libc)%s.\n", $id, last_node);
 }
 
-/^@deftypefn/ {
-  printf ("* %s: (libc)%s.\n",
-	  gensub (/@deftypefnx? +([^{ ]+|\{[^}]+\}) +[^{ ]*(\{[^}]+\})? +([[:alpha:]_][[:alnum:]_]*).*/, "\\3", 1),
-    last_node);
+/^@deftypefun/ {
+# Likewise, except it's $3 theoretically.
+  id = 3; check = 2; squig = 0;
+  while(check < id)
+  {
+    if($check ~ /{/) squig++;
+    if($check ~ /}/) squig--;
+    if(squig) id++;
+    check++;
+  }
+
+  printf ("* %s: (libc)%s.\n", $id, last_node);
 }