gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 134fa044529546


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.0-stable, updated. 134fa0445295460d897661ee18027c645b2baa73
Date: Sun, 09 Dec 2012 19:36:09 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.0-stable has been updated
       via  134fa0445295460d897661ee18027c645b2baa73 (commit)
       via  4ed8e81f87aadda3521a967b5c5e714bf027194b (commit)
       via  549694bc88a7345c10551d13017fa8a0eccb8619 (commit)
      from  d20af67ae8a6a573a0db906f9c9960a092f21b41 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=134fa0445295460d897661ee18027c645b2baa73

commit 134fa0445295460d897661ee18027c645b2baa73
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Dec 9 21:35:46 2012 +0200

    Use posix_openpt() if available.

diff --git a/ChangeLog b/ChangeLog
index 8fba6f2..2c11245 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,13 @@
        * main.c (main): Ditto.
        * builtin.c (do_system): Ditto.
 
+       Unrelated:
+
+       * configure.ac: Look for posix_openpt
+       * io.c (two_way_open): Use posix_openpt if it's available.
+       Thanks to Christian Weisgerber <address@hidden> for
+       the changes.
+
 2012-12-07         Arnold D. Robbins     <address@hidden>
 
        * awkgram.y (tokentab): `fflush()' is now in POSIX, remove the
diff --git a/configh.in b/configh.in
index 8cb9826..627533c 100644
--- a/configh.in
+++ b/configh.in
@@ -156,6 +156,9 @@
 /* Define to 1 if you have the <netinet/in.h> header file. */
 #undef HAVE_NETINET_IN_H
 
+/* Define to 1 if you have the `posix_openpt' function. */
+#undef HAVE_POSIX_OPENPT
+
 /* Define to 1 if you have the `setenv' function. */
 #undef HAVE_SETENV
 
diff --git a/configure b/configure
index 0696cca..099a161 100755
--- a/configure
+++ b/configure
@@ -9947,7 +9947,7 @@ esac
 for ac_func in atexit btowc fmod getgrent getgroups grantpt \
        isascii iswctype iswlower iswupper mbrlen \
        memcmp memcpy memcpy_ulong memmove memset \
-       memset_ulong mkstemp setenv setlocale setsid snprintf strchr \
+       memset_ulong mkstemp posix_openpt setenv setlocale setsid snprintf 
strchr \
        strerror strftime strncasecmp strcoll strtod strtoul \
        system tmpfile towlower towupper tzset usleep wcrtomb \
        wcscoll wctype
diff --git a/configure.ac b/configure.ac
index fbd0232..2db9ef7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -269,7 +269,7 @@ esac
 AC_CHECK_FUNCS(atexit btowc fmod getgrent getgroups grantpt \
        isascii iswctype iswlower iswupper mbrlen \
        memcmp memcpy memcpy_ulong memmove memset \
-       memset_ulong mkstemp setenv setlocale setsid snprintf strchr \
+       memset_ulong mkstemp posix_openpt setenv setlocale setsid snprintf 
strchr \
        strerror strftime strncasecmp strcoll strtod strtoul \
        system tmpfile towlower towupper tzset usleep wcrtomb \
        wcscoll wctype)
diff --git a/io.c b/io.c
index efdec06..4b65895 100644
--- a/io.c
+++ b/io.c
@@ -1598,7 +1598,7 @@ two_way_open(const char *str, struct redirect *rp)
        if (! no_ptys && pty_vs_pipe(str)) {
                static int initialized = FALSE;
                static char first_pty_letter;
-#ifdef HAVE_GRANTPT
+#if defined(HAVE_GRANTPT) && ! defined(HAVE_POSIX_OPENPT)
                static int have_dev_ptmx;
 #endif
                char slavenam[32];
@@ -1615,7 +1615,7 @@ two_way_open(const char *str, struct redirect *rp)
 
                if (! initialized) {
                        initialized = TRUE;
-#ifdef HAVE_GRANTPT
+#if defined(HAVE_GRANTPT) && ! defined(HAVE_POSIX_OPENPT)
                        have_dev_ptmx = (stat("/dev/ptmx", &statb) >= 0);
 #endif
                        i = 0;
@@ -1630,8 +1630,13 @@ two_way_open(const char *str, struct redirect *rp)
                }
 
 #ifdef HAVE_GRANTPT
+#ifdef HAVE_POSIX_OPENPT
+               {
+                       master = posix_openpt(O_RDWR|O_NOCTTY);
+#else
                if (have_dev_ptmx) {
                        master = open("/dev/ptmx", O_RDWR);
+#endif
                        if (master >= 0) {
                                char *tem;
 

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=4ed8e81f87aadda3521a967b5c5e714bf027194b

commit 4ed8e81f87aadda3521a967b5c5e714bf027194b
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Dec 9 20:04:03 2012 +0200

    Fix awkforai.txt to avoid copyright issues.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2dbbd08..d255da2 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-09         Arnold D. Robbins     <address@hidden>
+
+       * awkforai.txt: Changed content to be pointers to the article
+       to avoid copyright issues.
+       * gawk.texi: Updated description of awkforai.txt.
+
 2012-12-07         Arnold D. Robbins     <address@hidden>
 
        * gawk.texi (I/O Functions): Document that fflush() is now part
diff --git a/doc/awkforai.txt b/doc/awkforai.txt
index 3fca320..2908da5 100644
--- a/doc/awkforai.txt
+++ b/doc/awkforai.txt
@@ -1,150 +1,18 @@
-Draft for ACM SIGPLAN Patterns (Language Trends)
+Sun Dec  9 11:58:23 IST 2012
+============================
 
-1996
+The original of this file was a draft of an article written in 1996 by
+Ronald P. Lui for an ACM Sigplan publication, explaining why he used
+gawk for teaching introductory Artificial Intelligence courses.
 
-Why GAWK for AI?
+Since it was not clear as to copying permissions and so on, it has been
+removed from the gawk distribution.
 
-Ronald P. Loui
+A quick web search shows that this same draft is available at
+http://www.cs.wustl.edu/~loui/sigplan and the final article is available
+from the ACM: http://dl.acm.org/citation.cfm?id=242908
 
-Most people are surprised when I tell them what language we use in our
-undergraduate AI programming class.  That's understandable.  We use
-GAWK.  GAWK, Gnu's version of Aho, Weinberger, and Kernighan's old
-pattern scanning language isn't even viewed as a programming language by
-most people.  Like PERL and TCL, most prefer to view it as a "scripting
-language."  It has no objects; it is not functional; it does no built-in
-logic programming.  Their surprise turns to puzzlement when I confide
-that (a) while the students are allowed to use any language they want;
-(b) with a single exception, the best work consistently results from
-those working in GAWK.  (footnote:  The exception was a PASCAL
-programmer who is now an NSF graduate fellow getting a Ph.D. in
-mathematics at Harvard.) Programmers in C, C++, and LISP haven't even
-been close (we have not seen work in PROLOG or JAVA).
+The article itself is recommended reading.
 
-Why GAWK?
-
-There are some quick answers that have to do with the pragmatics of
-undergraduate programming.  Then there are more instructive answers that
-might be valuable to those who debate programming paradigms or to those
-who study the history of AI languages.  And there are some deep
-philosophical answers that expose the nature of reasoning and symbolic
-AI.  I think the answers, especially the last ones, can be even more
-surprising than the observed effectiveness of GAWK for AI.
-
-First it must be confessed that PERL programmers can cobble together AI
-projects well, too.  Most of GAWK's attractiveness is reproduced in
-PERL, and the success of PERL forebodes some of the success of GAWK.
-Both are powerful string-processing languages that allow the programmer
-to exploit many of the features of a UNIX environment.  Both provide
-powerful constructions for manipulating a wide variety of data in
-reasonably efficient ways.  Both are interpreted, which can reduce
-development time.  Both have short learning curves.  The GAWK manual can
-be consumed in a single lab session and the language can be mastered by
-the next morning by the average student.  GAWK's automatic
-initialization, implicit coercion, I/O support and lack of pointers
-forgive many of the mistakes that young programmers are likely to make.
-Those who have seen C but not mastered it are happy to see that GAWK
-retains some of the same sensibilities while adding what must be
-regarded as spoonsful of syntactic sugar.  Some will argue that
-PERL has superior functionality, but for quick AI applications, the
-additional functionality is rarely missed.  In fact, PERL's terse syntax
-is not friendly when regular expressions begin to proliferate and
-strings contain fragments of HTML, WWW addresses, or shell commands.
-PERL provides new ways of doing things, but not necessarily ways of
-doing new things.
-
-In the end, despite minor difference, both PERL and GAWK minimize
-programmer time.  Neither really provides the programmer the setting in
-which to worry about minimizing run-time.
-
-There are further simple answers.  Probably the best is the fact that
-increasingly, undergraduate AI programming is involving the Web.  Oren
-Etzioni (University of Washington, Seattle) has for a while been arguing
-that the "softbot" is replacing the mechanical engineers' robot as the
-most glamorous AI testbed.  If the artifact whose behavior needs to be
-controlled in an intelligent way is the software agent, then a language
-that is well-suited to controlling the software environment is the
-appropriate language.  That would imply a scripting language.  If the
-robot is KAREL, then the right language is "turn left; turn right." If
-the robot is Netscape, then the right language is something that can
-generate "netscape -remote 'openURL(http://cs.wustl.edu/~loui)'" with
-elan.
-
-Of course, there are deeper answers.  Jon Bentley found two pearls in
-GAWK:  its regular expressions and its associative arrays.  GAWK asks
-the programmer to use the file system for data organization and the
-operating system for debugging tools and subroutine libraries.  There is
-no issue of user-interface.  This forces the programmer to return to the
-question of what the program does, not how it looks.  There is no time
-spent programming a binsort when the data can be shipped to /bin/sort
-in no time.  (footnote:  I am reminded of my IBM colleague Ben Grosof's
-advice for Palo Alto:  Don't worry about whether it's highway 101 or 280.
-Don't worry if you have to head south for an entrance to go north.  Just
-get on the highway as quickly as possible.)
-
-There are some similarities between GAWK and LISP that are illuminating.
-Both provided a powerful uniform data structure (the associative array
-implemented as a hash table for GAWK and the S-expression, or list of
-lists, for LISP).  Both were well-supported in their environments (GAWK
-being a child of UNIX, and LISP being the heart of lisp machines).  Both
-have trivial syntax and find their power in the programmer's willingness
-to use the simple blocks to build a complex approach.
-
-Deeper still, is the nature of AI programming.  AI is about
-functionality and exploratory programming.  It is about bottom-up design
-and the building of ambitions as greater behaviors can be demonstrated.
-Woe be to the top-down AI programmer who finds that the bottom-level
-refinements, "this subroutine parses the sentence," cannot actually be
-implemented.  Woe be to the programmer who perfects the data structures
-for that heapsort when the whole approach to the high-level problem
-needs to be rethought, and the code is sent to the junkheap the next day.
-
-AI programming requires high-level thinking.  There have always been a few
-gifted programmers who can write high-level programs in assembly language.
-Most however need the ambient abstraction to have a higher floor.  
-
-Now for the surprising philosophical answers.  First, AI has discovered
-that brute-force combinatorics, as an approach to generating intelligent
-behavior, does not often provide the solution.  Chess, neural nets, and
-genetic programming show the limits of brute computation.  The
-alternative is clever program organization.  (footnote: One might add
-that the former are the AI approaches that work, but that is easily
-dismissed:  those are the AI approaches that work in general, precisely
-because cleverness is problem-specific.)  So AI programmers always want
-to maximize the content of their program, not optimize the efficiency
-of an approach.  They want minds, not insects.  Instead of enumerating
-large search spaces, they define ways of reducing search, ways of
-bringing different knowledge to the task.  A language that maximizes
-what the programmer can attempt rather than one that provides tremendous
-control over how to attempt it, will be the AI choice in the end.
-
-Second, inference is merely the expansion of notation.  No matter whether
-the logic that underlies an AI program is fuzzy, probabilistic, deontic,
-defeasible, or deductive, the logic merely defines how strings can be 
-transformed into other strings.  A language that provides the best
-support for string processing in the end provides the best support for
-logic, for the exploration of various logics, and for most forms of
-symbolic processing that AI might choose to call "reasoning" instead of
-"logic."  The implication is that PROLOG, which saves the AI programmer
-from having to write a unifier, saves perhaps two dozen lines of GAWK
-code at the expense of strongly biasing the logic and representational
-expressiveness of any approach.
-
-I view these last two points as news not only to the programming language
-community, but also to much of the AI community that has not reflected on
-the past decade's lessons.
-
-In the puny language, GAWK, which Aho, Weinberger, and Kernighan thought
-not much more important than grep or sed, I find lessons in AI's trends,
-AI's history, and the foundations of AI.  What I have found not only
-surprising but also hopeful, is that when I have approached the AI
-people who still enjoy programming, some of them are not the least bit
-surprised.
-
-
-R. Loui (address@hidden) is Associate Professor of Computer Science,
-at Washington University in St. Louis.  He has published in AI Journal,
-Computational Intelligence, ACM SIGART, AI Magazine, AI and Law, the ACM
-Computing Surveys Symposium on AI, Cognitive Science, Minds and
-Machines, Journal of Philosophy, and is on this year's program
-committees for AAAI (National AI conference) and KR (Knowledge
-Representation and Reasoning).
+Arnold Robbins
address@hidden
diff --git a/doc/gawk.info b/doc/gawk.info
index e23618b..9ce4b60 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -20532,8 +20532,9 @@ Various `.c', `.y', and `.h' files
      does not.
 
 `doc/awkforai.txt'
-     A short article describing why `gawk' is a good language for
-     Artificial Intelligence (AI) programming.
+     Pointers to the original draft of a short article describing why
+     `gawk' is a good language for Artificial Intelligence (AI)
+     programming.
 
 `doc/bc_notes'
      A brief description of `gawk''s "byte code" internals.
@@ -27257,7 +27258,7 @@ Index
 * testbits.awk program:                  Bitwise Functions.   (line  68)
 * Texinfo <1>:                           Adding Code.         (line  99)
 * Texinfo <2>:                           Distribution contents.
-                                                              (line  79)
+                                                              (line  80)
 * Texinfo <3>:                           Extract Program.     (line  12)
 * Texinfo <4>:                           Dupword Program.     (line  17)
 * Texinfo <5>:                           Library Functions.   (line  22)
@@ -27861,54 +27862,54 @@ Node: Gawk Distribution816604
 Node: Getting817088
 Node: Extracting817914
 Node: Distribution contents819606
-Node: Unix Installation824828
-Node: Quick Installation825445
-Node: Additional Configuration Options827407
-Node: Configuration Philosophy828884
-Node: Non-Unix Installation831226
-Node: PC Installation831684
-Node: PC Binary Installation832983
-Node: PC Compiling834998
-Node: PC Testing837942
-Node: PC Using839118
-Node: Cygwin843303
-Node: MSYS844303
-Node: VMS Installation844817
-Node: VMS Compilation845420
-Ref: VMS Compilation-Footnote-1846427
-Node: VMS Installation Details846485
-Node: VMS Running848120
-Node: VMS Old Gawk849727
-Node: Bugs850201
-Node: Other Versions854053
-Node: Notes859334
-Node: Compatibility Mode860026
-Node: Additions860809
-Node: Accessing The Source861621
-Node: Adding Code863046
-Node: New Ports869013
-Node: Dynamic Extensions873126
-Node: Internals874502
-Node: Plugin License883605
-Node: Sample Library884239
-Node: Internal File Description884925
-Node: Internal File Ops888640
-Ref: Internal File Ops-Footnote-1893421
-Node: Using Internal File Ops893561
-Node: Future Extensions895938
-Node: Basic Concepts898442
-Node: Basic High Level899199
-Ref: Basic High Level-Footnote-1903234
-Node: Basic Data Typing903419
-Node: Floating Point Issues907944
-Node: String Conversion Precision909027
-Ref: String Conversion Precision-Footnote-1910727
-Node: Unexpected Results910836
-Node: POSIX Floating Point Problems912662
-Ref: POSIX Floating Point Problems-Footnote-1916367
-Node: Glossary916405
-Node: Copying941580
-Node: GNU Free Documentation License979137
-Node: Index1004274
+Node: Unix Installation824867
+Node: Quick Installation825484
+Node: Additional Configuration Options827446
+Node: Configuration Philosophy828923
+Node: Non-Unix Installation831265
+Node: PC Installation831723
+Node: PC Binary Installation833022
+Node: PC Compiling835037
+Node: PC Testing837981
+Node: PC Using839157
+Node: Cygwin843342
+Node: MSYS844342
+Node: VMS Installation844856
+Node: VMS Compilation845459
+Ref: VMS Compilation-Footnote-1846466
+Node: VMS Installation Details846524
+Node: VMS Running848159
+Node: VMS Old Gawk849766
+Node: Bugs850240
+Node: Other Versions854092
+Node: Notes859373
+Node: Compatibility Mode860065
+Node: Additions860848
+Node: Accessing The Source861660
+Node: Adding Code863085
+Node: New Ports869052
+Node: Dynamic Extensions873165
+Node: Internals874541
+Node: Plugin License883644
+Node: Sample Library884278
+Node: Internal File Description884964
+Node: Internal File Ops888679
+Ref: Internal File Ops-Footnote-1893460
+Node: Using Internal File Ops893600
+Node: Future Extensions895977
+Node: Basic Concepts898481
+Node: Basic High Level899238
+Ref: Basic High Level-Footnote-1903273
+Node: Basic Data Typing903458
+Node: Floating Point Issues907983
+Node: String Conversion Precision909066
+Ref: String Conversion Precision-Footnote-1910766
+Node: Unexpected Results910875
+Node: POSIX Floating Point Problems912701
+Ref: POSIX Floating Point Problems-Footnote-1916406
+Node: Glossary916444
+Node: Copying941619
+Node: GNU Free Documentation License979176
+Node: Index1004313
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 63e9cbd..ec83964 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -27565,7 +27565,8 @@ as a list of things that the POSIX standard should 
describe but does not.
 
 @cindex artificial address@hidden @command{gawk} and
 @item doc/awkforai.txt
-A short article describing why @command{gawk} is a good language for
+Pointers to the original draft of
+a short article describing why @command{gawk} is a good language for
 Artificial Intelligence (AI) programming.
 
 @item doc/bc_notes

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=549694bc88a7345c10551d13017fa8a0eccb8619

commit 549694bc88a7345c10551d13017fa8a0eccb8619
Author: Arnold D. Robbins <address@hidden>
Date:   Sun Dec 9 20:02:07 2012 +0200

    Change BINMODE to use symbolic values.

diff --git a/ChangeLog b/ChangeLog
index 5b81ade..8fba6f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-12-09         Arnold D. Robbins     <address@hidden>
+
+       Clean up BINMODE to use symbolic values.
+
+       * awk.h (enum binmode_values): New enum.
+       * eval.c (set_BINMODE): Use them.
+       * io.c (binmode, close_rp, gawk_popen): Ditto.
+       * main.c (main): Ditto.
+       * builtin.c (do_system): Ditto.
+
 2012-12-07         Arnold D. Robbins     <address@hidden>
 
        * awkgram.y (tokentab): `fflush()' is now in POSIX, remove the
diff --git a/awk.h b/awk.h
index 0a0ac13..7dcecd2 100644
--- a/awk.h
+++ b/awk.h
@@ -836,6 +836,15 @@ struct redirect {
        const char *mode;
 };
 
+/* values for BINMODE, used as bit flags */
+
+enum binmode_values {
+       TEXT_TRANSLATE = 0,     /* usual \r\n ---> \n translation */
+       BINMODE_INPUT = 1,      /* no translation for input files */
+       BINMODE_OUTPUT = 2,     /* no translation for output files */
+       BINMODE_BOTH = 3        /* no translation for either */
+};
+
 /*
  * structure for our source, either a command line string or a source file.
  */
diff --git a/builtin.c b/builtin.c
index aed9dfe..be99cbc 100644
--- a/builtin.c
+++ b/builtin.c
@@ -1844,7 +1844,7 @@ do_system(int nargs)
                ret = system(cmd);
                if (ret != -1)
                        ret = WEXITSTATUS(ret);
-               if ((BINMODE & 1) != 0)
+               if ((BINMODE & BINMODE_INPUT) != 0)
                        os_setbinmode(fileno(stdin), O_BINARY);
 
                cmd[tmp->stlen] = save;
diff --git a/eval.c b/eval.c
index 57411af..49395d3 100644
--- a/eval.c
+++ b/eval.c
@@ -754,14 +754,14 @@ set_BINMODE()
                lintwarn(_("`BINMODE' is a gawk extension"));
        }
        if (do_traditional)
-               BINMODE = 0;
+               BINMODE = TEXT_TRANSLATE;
        else if ((BINMODE_node->var_value->flags & NUMBER) != 0) {
                BINMODE = (int) force_number(BINMODE_node->var_value);
                /* Make sure the value is rational. */
-               if (BINMODE < 0)
-                       BINMODE = 0;
-               else if (BINMODE > 3)
-                       BINMODE = 3;
+               if (BINMODE < TEXT_TRANSLATE)
+                       BINMODE = TEXT_TRANSLATE;
+               else if (BINMODE > BINMODE_BOTH)
+                       BINMODE = BINMODE_BOTH;
        }
        else if ((BINMODE_node->var_value->flags & STRING) != 0) {
                v = BINMODE_node->var_value;
@@ -783,13 +783,13 @@ set_BINMODE()
                                BINMODE = p[0] - '0';
                                break;
                        case 'r':
-                               BINMODE = 1;
+                               BINMODE = BINMODE_INPUT;
                                break;
                        case 'w':
-                               BINMODE = 2;
+                               BINMODE = BINMODE_OUTPUT;
                                break;
                        default:
-                               BINMODE = 3;
+                               BINMODE = BINMODE_BOTH;
                                goto bad_value;
                                break;
                        }
@@ -797,21 +797,21 @@ set_BINMODE()
                case 2:
                        switch (p[0]) {
                        case 'r':
-                               BINMODE = 3;
+                               BINMODE = BINMODE_BOTH;
                                if (p[1] != 'w')
                                        goto bad_value;
                                break;
                        case 'w':
-                               BINMODE = 3;
+                               BINMODE = BINMODE_BOTH;
                                if (p[1] != 'r')
                                        goto bad_value;
                                break;
+                       }
                        break;
                default:
        bad_value:
                        lintwarn(_("BINMODE value `%s' is invalid, treated as 
3"), p);
                        break;
-                       }
                }
        }
        else
diff --git a/io.c b/io.c
index c57aef2..efdec06 100644
--- a/io.c
+++ b/io.c
@@ -233,12 +233,12 @@ binmode(const char *mode)
 {
        switch (mode[0]) {
        case 'r':
-               if ((BINMODE & 1) != 0)
+               if ((BINMODE & BINMODE_INPUT) != 0)
                        mode = "rb";
                break;
        case 'w':
        case 'a':
-               if ((BINMODE & 2) != 0)
+               if ((BINMODE & BINMODE_OUTPUT) != 0)
                        mode = (mode[0] == 'w' ? "wb" : "ab");
                break;
        }
@@ -1017,7 +1017,7 @@ close_rp(struct redirect *rp, two_way_close_type how)
                }
        } else if ((rp->flag & (RED_PIPE|RED_WRITE)) == (RED_PIPE|RED_WRITE)) { 
/* write to pipe */
                status = pclose(rp->fp);
-               if ((BINMODE & 1) != 0)
+               if ((BINMODE & BINMODE_INPUT) != 0)
                        os_setbinmode(fileno(stdin), O_BINARY);
 
                rp->fp = NULL;
@@ -2134,7 +2134,7 @@ gawk_popen(const char *cmd, struct redirect *rp)
 
        os_restore_mode(fileno(stdin));
        current = popen(cmd, binmode("r"));
-       if ((BINMODE & 1) != 0)
+       if ((BINMODE & BINMODE_INPUT) != 0)
                os_setbinmode(fileno(stdin), O_BINARY);
        if (current == NULL)
                return NULL;
diff --git a/main.c b/main.c
index 2bb0b01..4292874 100644
--- a/main.c
+++ b/main.c
@@ -611,10 +611,10 @@ out:
        if (preassigns != NULL)
                efree(preassigns);
 
-       if ((BINMODE & 1) != 0)
+       if ((BINMODE & BINMODE_INPUT) != 0)
                if (os_setbinmode(fileno(stdin), O_BINARY) == -1)
                        fatal(_("can't set binary mode on stdin (%s)"), 
strerror(errno));
-       if ((BINMODE & 2) != 0) {
+       if ((BINMODE & BINMODE_OUTPUT) != 0) {
                if (os_setbinmode(fileno(stdout), O_BINARY) == -1)
                        fatal(_("can't set binary mode on stdout (%s)"), 
strerror(errno));
                if (os_setbinmode(fileno(stderr), O_BINARY) == -1)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog        |   17 ++++++
 awk.h            |    9 +++
 builtin.c        |    2 +-
 configh.in       |    3 +
 configure        |    2 +-
 configure.ac     |    2 +-
 doc/ChangeLog    |    6 ++
 doc/awkforai.txt |  158 +++++-------------------------------------------------
 doc/gawk.info    |  105 ++++++++++++++++++------------------
 doc/gawk.texi    |    3 +-
 eval.c           |   22 ++++----
 io.c             |   17 ++++--
 main.c           |    4 +-
 13 files changed, 130 insertions(+), 220 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]