diff --git a/Makefile b/Makefile index 34fdfd0b..a30423e4 100644 --- a/Makefile +++ b/Makefile @@ -45,11 +45,14 @@ regex.o: src/regex.c src/regex.h mxml.o: $(MXMLDIR)/mxml.c $(MXMLDIR)/mxml.h $(CC) $(CFLAGS) -DHAVE_STRLCPY -c -o mxml.o $(MXMLDIR)/mxml.c -elogd: src/elogd.c regex.o mxml.o - $(CC) $(CFLAGS) -I$(MXMLDIR) -o elogd src/elogd.c regex.o mxml.o $(LIBS) +strlcpy.o: src/strlcpy.c src/strlcpy.h + $(CC) $(CFLAGS) -c -o strlcpy.o src/strlcpy.c -debug: src/elogd.c regex.o mxml.o - $(CC) -g -I$(MXMLDIR) -o elogd src/elogd.c regex.o mxml.o $(LIBS) +elogd: src/elogd.c regex.o mxml.o strlcpy.o + $(CC) $(CFLAGS) -I$(MXMLDIR) -o elogd src/elogd.c regex.o mxml.o strlcpy.o $(LIBS) + +debug: src/elogd.c regex.o mxml.o strlcpy.o + $(CC) -g -I$(MXMLDIR) -o elogd src/elogd.c regex.o mxml.o strlcpy.o $(LIBS) %: src/%.c $(CC) $(CFLAGS) -o $@ $< $(LIBS) @@ -81,5 +84,5 @@ install: $(EXECS) restart: /etc/rc.d/init.d/elogd restart clean: - -$(RM) *~ $(EXECS) regex.o mxml.o + -$(RM) *~ $(EXECS) regex.o mxml.o strlcpy.o diff --git a/NT/elogd.mak b/NT/elogd.mak index 0990f24a..5a09c706 100755 --- a/NT/elogd.mak +++ b/NT/elogd.mak @@ -40,9 +40,11 @@ CLEAN : -@erase "$(INTDIR)\elogd.obj" -@erase "$(INTDIR)\regex.obj" -@erase "$(INTDIR)\mxml.obj" + -@erase "$(INTDIR)\strlcpy.obj" -@erase "$(INTDIR)\elogd.sbr" -@erase "$(INTDIR)\regex.sbr" -@erase "$(INTDIR)\mxml.sbr" + -@erase "$(INTDIR)\strlcpy.sbr" -@erase "$(INTDIR)\vc60.idb" -@erase "$(OUTDIR)\elogd.bsc" -@erase "$(OUTDIR)\elogd.exe" @@ -87,7 +89,7 @@ RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\elogd.bsc" BSC32_SBRS= \ - "$(INTDIR)\elogd.sbr" "$(INTDIR)\regex.sbr" "$(INTDIR)\mxml.sbr" + "$(INTDIR)\elogd.sbr" "$(INTDIR)\regex.sbr" "$(INTDIR)\mxml.sbr" $(INTDIR)\strlcpy.sbr"" "$(OUTDIR)\elogd.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< @@ -97,7 +99,7 @@ BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=wsock32.lib advapi32.lib /nologo /subsystem:console /stack:4000000 /incremental:no /pdb:"$(OUTDIR)\elogd.pdb" /machine:I386 /out:"$(OUTDIR)\elogd.exe" LINK32_OBJS= \ - "$(INTDIR)\elogd.obj" "$(INTDIR)\regex.obj" "$(INTDIR)\mxml.obj" + "$(INTDIR)\elogd.obj" "$(INTDIR)\regex.obj" "$(INTDIR)\mxml.obj" "$(INTDIR)\strlcpy.obj" "$(OUTDIR)\elogd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -122,6 +124,8 @@ CLEAN : -@erase "$(INTDIR)\regex.sbr" -@erase "$(INTDIR)\mxml.obj" -@erase "$(INTDIR)\mxml.sbr" + -@erase "$(INTDIR)\strlcpy.obj" + -@erase "$(INTDIR)\strlcpy.sbr" -@erase "$(INTDIR)\vc60.idb" -@erase "$(INTDIR)\vc60.pdb" -@erase "$(OUTDIR)\elogd.bsc" @@ -169,7 +173,7 @@ RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\elogd.bsc" BSC32_SBRS= \ - "$(INTDIR)\elogd.sbr" "$(INTDIR)\regex.sbr" "$(INTDIR)\mxml.sbr" + "$(INTDIR)\elogd.sbr" "$(INTDIR)\regex.sbr" "$(INTDIR)\mxml.sbr" "$(INTDIR)\strlcpy.sbr" "$(OUTDIR)\elogd.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< @@ -179,7 +183,7 @@ BSC32_SBRS= \ LINK32=link.exe LINK32_FLAGS=wsock32.lib advapi32.lib /nologo /subsystem:console /stack:4000000 /incremental:yes /pdb:"$(OUTDIR)\elogd.pdb" /debug /machine:I386 /out:"$(OUTDIR)\elogd.exe" /pdbtype:sept LINK32_OBJS= \ - "$(INTDIR)\elogd.obj" "$(INTDIR)\regex.obj" "$(INTDIR)\mxml.obj" + "$(INTDIR)\elogd.obj" "$(INTDIR)\regex.obj" "$(INTDIR)\mxml.obj" "$(INTDIR)\strlcpy.obj" "$(OUTDIR)\elogd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -212,5 +216,9 @@ SOURCE=..\..\mxml\mxml.c "$(INTDIR)\mxml.obj" "$(INTDIR)\mxml.sbr" : $(SOURCE) "$(INTDIR)" $(CPP) $(CPP_PROJ) /D "HAVE_STRLCPY" $(SOURCE) +SOURCE=..\src\strlcpy.c +"$(INTDIR)\strlcpy.obj" "$(INTDIR)\strlcpy.sbr" : $(SOURCE) "$(INTDIR)" + $(CPP) $(CPP_PROJ) /D "HAVE_STRLCPY" $(SOURCE) + !ENDIF diff --git a/NT/elogd.vcproj b/NT/elogd.vcproj index 0bce2b40..ef17574a 100755 --- a/NT/elogd.vcproj +++ b/NT/elogd.vcproj @@ -175,6 +175,9 @@ + + = siz, truncation occurred. -*/ -size_t strlcpy(char *dst, const char *src, size_t size) -{ - char *d = dst; - const char *s = src; - size_t n = size; - - /* Copy as many bytes as will fit */ - if (n != 0 && --n != 0) { - do { - if ((*d++ = *s++) == 0) - break; - } while (--n != 0); - } - - /* Not enough room in dst, add NUL and traverse rest of src */ - if (n == 0) { - if (size != 0) - *d = '\0'; /* NUL-terminate dst */ - while (*s++); - } - - return (s - src - 1); /* count does not include NUL */ -} - -/* -* Appends src to string dst of size siz (unlike strncat, siz is the -* full size of dst, not space left). At most siz-1 characters -* will be copied. Always NUL terminates (unless size <= strlen(dst)). -* Returns strlen(src) + MIN(size, strlen(initial dst)). -* If retval >= size, truncation occurred. -*/ -size_t strlcat(char *dst, const char *src, size_t size) -{ - char *d = dst; - const char *s = src; - size_t n = size; - size_t dlen; - - /* Find the end of dst and adjust bytes left but don't go past end */ - while (n-- != 0 && *d != '\0') - d++; - dlen = d - dst; - n = size - dlen; - - if (n == 0) - return (dlen + strlen(s)); - while (*s != '\0') { - if (n != 1) { - *d++ = *s; - n--; - } - s++; - } - *d = '\0'; - - return (dlen + (s - src)); /* count does not include NUL */ -} - -/*-------------------------------------------------------------------*/ - void strsubst(char *string, int size, char name[][NAME_LENGTH], char value[][NAME_LENGTH], int n) /* subsitute "$name" with value corresponding to name */ {