Mail Archives: djgpp-workers/1997/09/23/07:29:49
This change eliminates the code that adds a new node to the linked list.
That list holds information from previous calls to `popen' that didn't
have a corresponding `pclose' yet. So, if a program calls `popen' twice
(or more) in a row, the second call overwrites the info of the first. Bad
idea...
Or did I miss something?
On Tue, 23 Sep 1997, Molnar Laszlo wrote:
> Just to save some bytes in libc.a....
>
> Laszlo
>
>
> *** ~popen.c Sun Aug 31 15:11:18 1997
> --- popen.c Sat Sep 20 17:34:50 1997
> ***************
> *** 77,81 ****
> popen (const char *cm, const char *md) /* program name, pipe mode */
> {
> ! struct pipe_list *l1, *l2;
>
> /* make new node */
> --- 77,81 ----
> popen (const char *cm, const char *md) /* program name, pipe mode */
> {
> ! struct pipe_list *l1;
>
> /* make new node */
> ***************
> *** 90,107 ****
> /* if empty list - just grab new node */
> if (!pl)
> ! pl = l1;
> ! else
> ! {
> ! /* otherwise, find last node in list */
> ! ++(l1->fd);
> ! l2 = pl;
> ! while (l2->next)
> ! {
> ! ++(l1->fd);
> ! l2 = l2->next;
> ! };
> ! /* add new node to list */
> ! l2->next = l1;
> ! }
>
> /* stick in elements we know already */
> --- 90,95 ----
> /* if empty list - just grab new node */
> if (!pl)
> ! l1->next = pl;
> ! pl = l1;
>
> /* stick in elements we know already */
>
- Raw text -