You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

159 lines
4.8 KiB

Index: popper/main.c
--- popper/main.c.orig 2003-01-02 03:39:02.000000000 +0100
+++ popper/main.c 2003-09-18 22:04:57.000000000 +0200
@@ -226,12 +226,6 @@
err_out = msg_out = fopen ( "/dev/null", "w+" ); /* until we get set up */
/*
- * Ensure default port & address is in network order
- */
- addr = htonl ( addr );
- port = htons ( port );
-
- /*
* Set defaults for Qargc and Qargv
*/
Qargc = argc;
@@ -256,43 +250,34 @@
ptr = argv [ 1 ];
if ( argc >= 2 && ( *ptr == ':' || isdigit ( (int) *ptr ) ) )
{
- unsigned long a = addr;
- unsigned short n = port;
- char b [ 25 ] = "";
- char *q = b;
-
- /*
- * We might have an ip address first
- */
- if ( strchr ( ptr, '.' ) != NULL )
- while ( *ptr == '.' || isdigit ( (int) *ptr ) )
- *q++ = *ptr++;
-
- if ( *b != '\0' )
- {
- a = inet_addr ( b );
- ptr = strchr ( ptr, ':' );
- if ( ptr != NULL )
- ptr++;
+ char *cpIp = NULL;
+ char *cpPort = NULL;
+ char *cpDup;
+ char *cp;
+
+ if ((cpDup = strdup(ptr)) == NULL)
+ err_dump ( HERE, "unable to allocate memory to examine first argument" );
+ if ((cp = strchr(cpDup, ':')) != NULL) {
+ *cp++ = '\0'; /* a colon means both ip and port are given, split them */
+ if (*cpDup != '\0') /* do not accept empty strings */
+ cpIp = cpDup;
+ if (*cp != '\0') /* do not accept empty strings */
+ cpPort = cp;
}
- else
- {
- ptr = argv [ 1 ];
- if ( *ptr == ':' )
- ptr++;
+ else {
+ if (strchr (ptr, '.') != NULL)
+ cpIp = cpDup; /* no colon but a dot means a ip is given */
+ else
+ cpPort = cpDup; /* no colon and no dot means a port is given */
}
+ if (cpIp != NULL )
+ addr = inet_addr(cpIp);
+ if (cpPort != NULL )
+ port = atoi(cpPort);
+ free(cpDup);
- /*
- * We might have a port number
- */
- if ( ptr != NULL )
- n = atoi ( ptr );
-
- if ( a == BAD_ADDR || n == 0 || n > USHRT_MAX )
+ if ( addr == BAD_ADDR || port == 0 || port > USHRT_MAX )
err_dump ( HERE, "invalid address and/or port: \"%s\"", argv[1] );
-
- port = htons ( n );
- addr = a;
/*
* Since we consumed the first specified parameter,
@@ -310,6 +295,8 @@
Qargv [ rslt - 1 ] = argv [ rslt ];
Qargc = argc - 1;
}
+ /* Ensure address remains and default port becomes network byte order */
+ port = htons ( port );
/*
* Open the log
@@ -477,6 +464,22 @@
#endif /* not _DEBUG */
+#ifdef PIDFILE
+ /*
+ * Write PID file. -- RSE
+ */
+ {
+ pid_t pid;
+ FILE *fp;
+
+ pid = getpid();
+ if ((fp = fopen(PIDFILE, "w")) == NULL)
+ err_dump(HERE, "Can't write pidfile '%s'", PIDFILE);
+ fprintf(fp, "%ld\n", (long)pid);
+ fclose(fp);
+ }
+#endif
+
/*
* Set up the socket on which we listen
*/
@@ -510,17 +513,9 @@
rslt = bind ( sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr) );
if ( rslt < 0 )
{
- if ( errno == EADDRINUSE )
- {
- fprintf ( stderr, "%s:%d in use\n",
- inet_ntoa ( serv_addr.sin_addr ),
- ntohs ( serv_addr.sin_port ) );
- return 1;
- }
- else
- err_dump ( HERE, "Can't bind local address %s:%d",
- inet_ntoa ( serv_addr.sin_addr ),
- ntohs ( serv_addr.sin_port ) );
+ err_dump ( HERE, "Can't bind local address %s:%d",
+ inet_ntoa ( serv_addr.sin_addr ),
+ ntohs ( serv_addr.sin_port ) );
}
TRACE ( trace_file, POP_DEBUG, HERE,
Index: pop_dropcopy.c
--- popper/pop_dropcopy.c.orig 2003-01-02 03:39:02.000000000 +0100
+++ popper/pop_dropcopy.c 2003-10-01 17:33:31.000000000 +0200
@@ -1231,6 +1231,10 @@
return pop_msg ( p, POP_FAILURE, HERE,
"[SYS/TEMP] Unable to get temp drop name" );
+ /*
+ * OpenPKG: enforce usage of "spool-dir" configuration option
+ */
+#if 0
if ( stat ( p->temp_drop, &mybuf ) == -1 || mybuf.st_size <= 0 ) {
if ( genpath ( p,
p->temp_drop,
@@ -1239,6 +1243,7 @@
return pop_msg ( p, POP_FAILURE, HERE,
"[SYS/TEMP] Unable to get temp drop name" );
}
+#endif
}
else {
/*