/[muddleftpd]/muddleftpd/src/newfile.c
ViewVC logotype

Diff of /muddleftpd/src/newfile.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by ganneff, Thu Sep 26 07:55:42 2002 UTC revision 1.1.6.1 by ganneff, Mon Oct 21 19:52:59 2002 UTC
# Line 1  Line 1 
1    
2  /* Copyright (C) 1999 Beau Kuiper  /* Copyright (C) 1999 Beau Kuiper
3    
4     This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
# Line 16  Line 17 
17    
18  #include "ftpd.h"  #include "ftpd.h"
19    
20  int readbuffer(NEWFILE *file)  int readbuffer(NEWFILE * file)
21  {  {
22          char inbuf[BUFFERSIZE];          char inbuf[BUFFERSIZE];
23          int size, oldsize = STRLENGTH(file->buffer);          int size, oldsize = STRLENGTH(file->buffer);
24            
25          size = read(file->fd, inbuf, BUFFERSIZE);          size = read(file->fd, inbuf, BUFFERSIZE);
26          if (size == 0)          if (size == 0)
27                  file->eof = TRUE;                  file->eof = TRUE;
# Line 30  int readbuffer(NEWFILE *file) Line 31  int readbuffer(NEWFILE *file)
31                  file->eof = TRUE;                  file->eof = TRUE;
32          }          }
33          if (file->eof)          if (file->eof)
34                  return(size);                  return (size);
35          string_cat(&(file->buffer), inbuf, size);          string_cat(&(file->buffer), inbuf, size);
36          string_filterbadchars(&(file->buffer), oldsize);          string_filterbadchars(&(file->buffer), oldsize);
37          return(STRLENGTH(file->buffer) - oldsize);          return (STRLENGTH(file->buffer) - oldsize);
38  }  }
39            
40  NEWFILE *nfopen(char *filename)  NEWFILE *nfopen(char *filename)
41  {  {
42          NEWFILE *new;          NEWFILE *new;
43            
44          /* if we get null, return null! */          /*
45             * if we get null, return null!
46             */
47          if (!filename)          if (!filename)
48                  return(NULL);                  return (NULL);
49                    
50          new = mallocwrapper(sizeof(NEWFILE));          new = mallocwrapper(sizeof(NEWFILE));
51            
52          new->fd = open(filename, O_RDONLY);          new->fd = open(filename, O_RDONLY);
53    
54          if (new->fd == -1)          if (new->fd == -1)
55          {          {
56                  freewrapper(new);                  freewrapper(new);
57                  return(NULL);                  return (NULL);
58          }          }
59                            
60          new->buffer = string_new();          new->buffer = string_new();
61          new->eof = FALSE;          new->eof = FALSE;
62          return(new);              return (new);
63  }  }
64    
65  NEWFILE *nfdopen(int fd)  NEWFILE *nfdopen(int fd)
66  {  {
67          NEWFILE *new = mallocwrapper(sizeof(NEWFILE));          NEWFILE *new = mallocwrapper(sizeof(NEWFILE));
68            
69          new->fd = fd;          new->fd = fd;
70            
71          if (new->fd == -1)          if (new->fd == -1)
72          {          {
73                  freewrapper(new);                  freewrapper(new);
74                  return(NULL);                  return (NULL);
75          }          }
76                            
77          new->buffer = string_new();          new->buffer = string_new();
78          new->eof = FALSE;          new->eof = FALSE;
79          return(new);              return (new);
80  }  }
81    
82  char *nfgetcs(NEWFILE *file, char testchar)  char *nfgetcs(NEWFILE * file,
83                              char testchar)
84  {  {
85          char *bptr, *result;          char *bptr, *result;
86          int slen;          int slen;
87          int bufferlen = 0;          int bufferlen = 0;
88          int nextbuflen = STRLENGTH(file->buffer);          int nextbuflen = STRLENGTH(file->buffer);
89            
90          if (file->eof)          if (file->eof)
91                  return(NULL);                  return (NULL);
92    
93          while((bptr = strchr(STRTOCHAR(file->buffer) + bufferlen, (int)testchar)) == NULL)          while ((bptr =
94                            strchr(STRTOCHAR(file->buffer) + bufferlen,
95                                       (int) testchar)) == NULL)
96          {          {
97                  bufferlen += nextbuflen;                  bufferlen += nextbuflen;
98                  nextbuflen = readbuffer(file);                  nextbuflen = readbuffer(file);
99                    
100                  if (nextbuflen == 0)                  if (nextbuflen == 0)
101                  {                  {
102                          bptr = STRTOCHAR(file->buffer) + STRLENGTH(file->buffer);                          bptr = STRTOCHAR(file->buffer) + STRLENGTH(file->buffer);
103                          break;                          break;
104                  }                  }
105                  else if (nextbuflen == -1)                  else if (nextbuflen == -1)
106                          return(NULL);                          return (NULL);
107          }          }
108            
109          /* set up the result */          /*
110          slen = bptr - STRTOCHAR(file->buffer) + 1;                 * set up the result
111                     */
112            slen = bptr - STRTOCHAR(file->buffer) + 1;
113    
114          result = mallocwrapper(slen + 1);          result = mallocwrapper(slen + 1);
115          memcpy(result, STRTOCHAR(file->buffer), slen);          memcpy(result, STRTOCHAR(file->buffer), slen);
116          result[slen] = 0;          result[slen] = 0;
117            
118          /* fix up the buffer */          /*
119             * fix up the buffer
120             */
121          string_dropfront(&(file->buffer), slen);          string_dropfront(&(file->buffer), slen);
122    
123          return(result);          return (result);
124  }  }
125    
126  void nfclose(NEWFILE *file)  void nfclose(NEWFILE * file)
127  {  {
128          close(file->fd);          close(file->fd);
129          freewrapper(file->buffer);          freewrapper(file->buffer);

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.6.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26