comparison lib-src/pop.c @ 9591:0774e217e8aa

Don't declare malloc, realloc, free. Don't include string.h or strings.h. Include des.h before krb.h. Do declare my_strstr. (getline): Really use my_strstr. Leave one empty place in server->buffer, and put a null at the end of the data in it.
author Richard M. Stallman <rms@gnu.org>
date Tue, 18 Oct 1994 07:34:59 +0000
parents 939488de5d3f
children 132798b0352b
comparison
equal deleted inserted replaced
9590:f84a7b49021d 9591:0774e217e8aa
24 #include <netinet/in.h> 24 #include <netinet/in.h>
25 #include <sys/socket.h> 25 #include <sys/socket.h>
26 #include <pop.h> 26 #include <pop.h>
27 #ifdef sun 27 #ifdef sun
28 #include <malloc.h> 28 #include <malloc.h>
29 #else
30 extern char *malloc (/* unsigned */);
31 extern char *realloc (/* char *, unsigned */);
32 extern void free (/* char * */);
33 #endif 29 #endif
34 #endif 30 #endif
35 #ifdef HESIOD 31 #ifdef HESIOD
36 #include <hesiod.h> 32 #include <hesiod.h>
37 /* 33 /*
41 * hesiod.h does. 37 * hesiod.h does.
42 */ 38 */
43 extern struct servent *hes_getservbyname (/* char *, char * */); 39 extern struct servent *hes_getservbyname (/* char *, char * */);
44 #endif 40 #endif
45 #include <pwd.h> 41 #include <pwd.h>
46 #include <string.h>
47 #include <strings.h>
48 #include <netdb.h> 42 #include <netdb.h>
49 #include <errno.h> 43 #include <errno.h>
50 #include <stdio.h> 44 #include <stdio.h>
51 #ifdef KERBEROS 45 #ifdef KERBEROS
52 #ifndef KRB5 46 #ifndef KRB5
47 #include <des.h>
53 #include <krb.h> 48 #include <krb.h>
54 #include <des.h>
55 #else /* KRB5 */ 49 #else /* KRB5 */
56 #include <krb5/krb5.h> 50 #include <krb5/krb5.h>
57 #include <krb5/ext-proto.h> 51 #include <krb5/ext-proto.h>
58 #include <ctype.h> 52 #include <ctype.h>
59 #endif /* KRB5 */ 53 #endif /* KRB5 */
82 static int getok (/* popserver */); 76 static int getok (/* popserver */);
83 #if 0 77 #if 0
84 static int gettermination (/* popserver */); 78 static int gettermination (/* popserver */);
85 #endif 79 #endif
86 static void pop_trash (/* popserver */); 80 static void pop_trash (/* popserver */);
81
82 static char *my_strstr ();
87 83
88 #define ERROR_MAX 80 /* a pretty arbitrary size */ 84 #define ERROR_MAX 80 /* a pretty arbitrary size */
89 #define POP_PORT 110 85 #define POP_PORT 110
90 #define KPOP_PORT 1109 86 #define KPOP_PORT 1109
91 #define POP_SERVICE "pop" 87 #define POP_SERVICE "pop"
1169 1165
1170 int ret; 1166 int ret;
1171 1167
1172 if (server->data) 1168 if (server->data)
1173 { 1169 {
1174 char *cp = strstr (server->buffer + server->buffer_index, "\r\n"); 1170 char *cp = my_strstr (server->buffer + server->buffer_index, "\r\n");
1175 if (cp) 1171 if (cp)
1176 { 1172 {
1177 int found; 1173 int found;
1178 int data_used; 1174 int data_used;
1179 1175
1212 pop_trash (server); 1208 pop_trash (server);
1213 return (0); 1209 return (0);
1214 } 1210 }
1215 } 1211 }
1216 ret = read (server->file, server->buffer + server->data, 1212 ret = read (server->file, server->buffer + server->data,
1217 server->buffer_size - server->data); 1213 server->buffer_size - server->data - 1);
1218 if (ret < 0) 1214 if (ret < 0)
1219 { 1215 {
1220 strcpy (pop_error, GETLINE_ERROR); 1216 strcpy (pop_error, GETLINE_ERROR);
1221 strncat (pop_error, strerror (errno), 1217 strncat (pop_error, strerror (errno),
1222 ERROR_MAX - sizeof (GETLINE_ERROR)); 1218 ERROR_MAX - sizeof (GETLINE_ERROR));
1229 pop_trash (server); 1225 pop_trash (server);
1230 return (0); 1226 return (0);
1231 } 1227 }
1232 else 1228 else
1233 { 1229 {
1234 char *cp = strstr (server->buffer, "\r\n"); 1230 char *cp;
1235 server->data += ret; 1231 server->data += ret;
1232 server->buffer[server->data] = '\0';
1236 1233
1234 cp = my_strstr (server->buffer, "\r\n");
1237 if (cp) 1235 if (cp)
1238 { 1236 {
1239 int data_used = (cp + 2) - server->buffer; 1237 int data_used = (cp + 2) - server->buffer;
1240 *cp = '\0'; 1238 *cp = '\0';
1241 server->data -= data_used; 1239 server->data -= data_used;