]> Zhao Yanbai Git Server - minix.git/commitdiff
updated syslog(), added setenv()
authorBen Gras <ben@minix3.org>
Mon, 3 Apr 2006 15:03:07 +0000 (15:03 +0000)
committerBen Gras <ben@minix3.org>
Mon, 3 Apr 2006 15:03:07 +0000 (15:03 +0000)
lib/other/Makefile.in
lib/other/setenv.c [new file with mode: 0755]
lib/other/syslog.c

index e941573976285d03c13d3c55e2d7e01ba053467b..d0b802560f396eaa0d537cd254f8bb691404bb10 100644 (file)
@@ -61,6 +61,7 @@ libc_FILES=" \
        putw.c \
        random.c \
        rindex.c \
+       setenv.c \
        setgroups.c \
        settimeofday.c \
        stderr.c \
diff --git a/lib/other/setenv.c b/lib/other/setenv.c
new file mode 100755 (executable)
index 0000000..b734a98
--- /dev/null
@@ -0,0 +1,25 @@
+
+#include       <stdlib.h>
+#include       <string.h>
+
+int
+setenv(const char *name, const char *val, int overwrite)
+{
+       char *bf;
+       int r;
+
+       if(!overwrite && getenv(name))
+               return 0;
+
+       if(!(bf=malloc(strlen(name)+strlen(val)+2)))
+               return -1;
+
+       strcpy(bf, name);
+       strcat(bf, "=");
+       strcat(bf, val);
+
+       r = putenv(bf);
+
+       return r == 0 ? 0 : -1;
+}
+
index 9d8048c19faabe37dda6163b31a6aeb2d229bc4c..caf2120e4d79a0727c399da6fc9149096ff8abb6 100644 (file)
  * Rewritten by Martin Mares <mj@atrey.karlin.mff.cuni.cz> on May 14, 1997
  * Rewritten by G. Falzoni <gfalzoni@inwind.it> for porting to Minix
  *
- * $Log$
- * Revision 1.1  2005/10/31 14:31:05  beng
- * Giovanni's symlink (+syslog+flock) patches.
- *
- * Revision 1.2  2001/01/04 11:54:26  root
- * Removed variable to store PID which is computed
- * at each call to avoid reporting parent's pid.
- *
  * $Id$
  */
 #include <sys/types.h>
@@ -68,6 +60,7 @@
 #include <errno.h>
 #include <net/gen/inet.h>
 
+static int LogPid = (-1);
 static int nfd = (-1);
 static int LogFacility = LOG_USER;
 static int LogFlags = 0;
@@ -86,6 +79,8 @@ void openlog(const char *ident, int option, int facility)
 
   /* Stores logging flags */
   LogFlags = option & (LOG_PID | LOG_PERROR | LOG_CONS);
+  /* Stores process id. if LOG_PID was specified */
+  if (option & LOG_PID) LogPid = getpid();
   /* Stores the requested facility */
   LogFacility = facility;
   /* Stores log tag if supplied */
@@ -134,14 +129,14 @@ void syslog(int lprty, const char *msg,...)
   int len, rc;
   va_list ap;
 
-  /* First log message opens a channel to syslog */
+  /* First log message open chnnel to syslog */
   if (nfd < 0) openlog(TagBuffer, LogFlags | LOG_NDELAY, LogFacility);
   time(&now);
   len = sprintf(buff, "<%d>%.15s %s: ",
                LogFacility | lprty, ctime(&now) + 4, TagBuffer);
   if (LogFlags & LOG_PID) {
        len -= 2;
-       len += sprintf(buff + len, "[%d]: ", getpid());
+       len += sprintf(buff + len, "[%d]: ", LogPid);
   }
   va_start(ap, msg);
   len += vsprintf(buff + len, msg, ap);
@@ -163,7 +158,7 @@ void closelog(void)
 {
 
   close(nfd);
-  nfd = -1;
+  LogPid = nfd = -1;
   LogFacility = LOG_USER;
   LogFlags = 0;
   return;