fixup
[lcr.git] / macro.h
diff --git a/macro.h b/macro.h
index 5d2bce5..8d904df 100644 (file)
--- a/macro.h
+++ b/macro.h
@@ -13,7 +13,7 @@
 
 /* safe strcpy/strncpy */
 
-#define SCPY(dst, src) scpy(dst, src, sizeof(dst))
+#define SCPY(dst, src) scpy((char *)dst, src, sizeof(dst))
 static inline void scpy(char *dst, const char *src, unsigned int siz)
 {
        strncpy(dst, src, siz);
@@ -22,16 +22,16 @@ static inline void scpy(char *dst, const char *src, unsigned int siz)
 
 /* safe strcat/strncat */
 
-#define SCAT(dst, src) scat(dst, src, sizeof(dst)-strlen(dst)-1)
+#define SCAT(dst, src) scat((char *)dst, src, sizeof(dst))
 static inline void scat(char *dst, const char *src, unsigned int siz)
 {
-       strncat(dst, src, siz);
+       strncat(dst, src, siz-strlen(dst)-1);
        dst[siz-1] = '\0';
 }
 
 /* safe concat of a byte */
 
-#define SCCAT(dst, src) sccat(dst, src, sizeof(dst))
+#define SCCAT(dst, src) sccat((char *)dst, src, sizeof(dst))
 static inline void sccat(char *dst, char chr, unsigned int siz)
 {
        if (strlen(dst) < siz-1)
@@ -43,7 +43,7 @@ static inline void sccat(char *dst, char chr, unsigned int siz)
 
 /* safe sprintf/snprintf */
 
-#define SPRINT(dst, fmt, arg...) sprint(dst, sizeof(dst), fmt, ## arg)
+#define SPRINT(dst, fmt, arg...) sprint((char *)dst, sizeof(dst), fmt, ## arg)
 static inline void sprint(char *dst, unsigned int siz, const char *fmt, ...)
 {
        va_list args;
@@ -115,6 +115,8 @@ static inline char *_getline(char *buffer, int size, FILE *fp)
                return buffer;
        if (buffer[strlen(buffer)-1] == '\n')
                buffer[strlen(buffer)-1] = '\0';
+       if (!buffer[0])
+               return buffer;
        if (buffer[strlen(buffer)-1] == '\r')
                buffer[strlen(buffer)-1] = '\0';
        return buffer;