-const char miscutil_rcs[] = "$Id: miscutil.c,v 1.51 2007/06/17 16:12:22 fabiankeil Exp $";
+const char miscutil_rcs[] = "$Id: miscutil.c,v 1.52 2007/08/19 12:32:34 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/miscutil.c,v $
*
* Revisions :
* $Log: miscutil.c,v $
+ * Revision 1.52 2007/08/19 12:32:34 fabiankeil
+ * Fix a conversion warning.
+ *
* Revision 1.51 2007/06/17 16:12:22 fabiankeil
* #ifdef _WIN32 the last commit. According to David Shaw,
* one of the gnupg developers, the changes are mingw32-specific.
}
+#ifdef USE_PRIVOXY_STRLCPY
+/*********************************************************************
+ *
+ * Function : privoxy_strlcpy
+ *
+ * Description : strlcpy(3) look-alike for those without decent libc.
+ *
+ * Parameters :
+ * 1 : destination: buffer to copy into.
+ * 2 : source: String to copy.
+ * 3 : size: Size of destination buffer.
+ *
+ * Returns : The length of the string that privoxy_strlcpy() tried to create.
+ *
+ *********************************************************************/
+size_t privoxy_strlcpy(char *destination, const char *source, const size_t size)
+{
+ snprintf(destination, size, "%s", source);
+ /*
+ * Platforms that lack strlcpy() also tend to have
+ * a broken snprintf implementation that doesn't
+ * guarantee nul termination.
+ *
+ * XXX: the configure script should detect and reject those.
+ */
+ destination[(size > 1) ? size-1 : 0] = '\0';
+
+ return strlen(source);
+}
+#endif /* def USE_PRIVOXY_STRLCPY */
+
+
#ifndef HAVE_STRLCAT
/*********************************************************************
*
* 2 : source: String to copy.
* 3 : size: Size of destination buffer.
*
- * Returns : The length of the string that strlcat tried to create.
+ * Returns : The length of the string that privoxy_strlcat() tried to create.
*
*********************************************************************/
size_t privoxy_strlcat(char *destination, const char *source, const size_t size)
#ifndef MISCUTIL_H_INCLUDED
#define MISCUTIL_H_INCLUDED
-#define MISCUTIL_H_VERSION "$Id: miscutil.h,v 1.27 2007/04/09 17:48:51 fabiankeil Exp $"
+#define MISCUTIL_H_VERSION "$Id: miscutil.h,v 1.28 2007/05/11 11:48:16 fabiankeil Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/miscutil.h,v $
*
* Revisions :
* $Log: miscutil.h,v $
+ * Revision 1.28 2007/05/11 11:48:16 fabiankeil
+ * - Delete strsav() which was replaced
+ * by string_append() years ago.
+ * - Add a strlcat() look-alike.
+ * - Use strlcat() and strlcpy() in those parts
+ * of the code that are run on unixes.
+ *
* Revision 1.27 2007/04/09 17:48:51 fabiankeil
* Check for HAVE_SNPRINTF instead of __OS2__
* before including the portable snprintf() code.
/* Here's looking at you, Ulrich. */
#if !defined(HAVE_STRLCPY)
-#define strlcpy(dst, src, size) (size_t)snprintf((dst), (size), "%s", (src))
+size_t privoxy_strlcpy(char *destination, const char *source, size_t size);
+#define strlcpy privoxy_strlcpy
+#define USE_PRIVOXY_STRLCPY 1
#define HAVE_STRLCPY 1
#endif /* ndef HAVE_STRLCPY*/