Mercurial > emacs
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; |