diff options
Diffstat (limited to 'manual')
-rw-r--r-- | manual/Makefile | 12 | ||||
-rw-r--r-- | manual/users.texi | 2 | ||||
-rw-r--r-- | manual/xtract-typefun.awk | 43 |
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); } |