projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix the real bug, that was hidden in the .h
[apps/madmutt.git]
/
lib-lib
/
str.c
diff --git
a/lib-lib/str.c
b/lib-lib/str.c
index
7b57305
..
ab603da
100644
(file)
--- a/
lib-lib/str.c
+++ b/
lib-lib/str.c
@@
-17,8
+17,17
@@
* Copyright © 2006 Pierre Habouzit
*/
* Copyright © 2006 Pierre Habouzit
*/
+/** \addtogroup mutt_strings */
+/*@{*/
+
+/** \file str.c
+ * \brief Madmutt string API module implementation.
+ * \author Pierre Habouzit <madcoder@debian.org>
+ */
+
#include "lib-lib.h"
#include "lib-lib.h"
+#ifndef _DOXYGEN_SKIP_ME
#define XX 255
unsigned char const __m_strdigits[128] = {
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
#define XX 255
unsigned char const __m_strdigits[128] = {
XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
@@
-66,13
+75,25
@@
char const __m_b36chars_upper[36] = {
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z'
};
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z'
};
+#endif
-
+/** \brief safe strcpy.
+ *
+ * Copies at most <tt>n-1</tt> characters from \c src into \c dst, always
+ * adding a final \c '\\0' in \c dst.
+ *
+ * \param[in] dst destination buffer.
+ * \param[in] n size of the buffer. Negative sizes are allowed.
+ * \param[in] src source string.
+ *
+ * \return \c src \e length. If this value is \>= \c n then the copy was
+ * truncated.
+ */
ssize_t m_strcpy(char *dst, ssize_t n, const char *src)
{
ssize_t len = m_strlen(src);
ssize_t m_strcpy(char *dst, ssize_t n, const char *src)
{
ssize_t len = m_strlen(src);
- if (
dst &&
n > 0) {
+ if (n > 0) {
ssize_t dlen = MIN(n - 1, len);
memcpy(dst, src, dlen);
dst[dlen] = '\0';
ssize_t dlen = MIN(n - 1, len);
memcpy(dst, src, dlen);
dst[dlen] = '\0';
@@
-85,7
+106,7
@@
ssize_t m_strncpy(char *dst, ssize_t n, const char *src, ssize_t l)
{
ssize_t len = MIN(m_strlen(src), l);
{
ssize_t len = MIN(m_strlen(src), l);
- if (
dst &&
n > 0) {
+ if (n > 0) {
ssize_t dlen = MIN(n - 1, len);
memcpy(dst, src, dlen);
dst[dlen] = '\0';
ssize_t dlen = MIN(n - 1, len);
memcpy(dst, src, dlen);
dst[dlen] = '\0';
@@
-96,16
+117,12
@@
ssize_t m_strncpy(char *dst, ssize_t n, const char *src, ssize_t l)
char *m_strrtrim(char *s)
{
char *m_strrtrim(char *s)
{
- if (s) {
- char *p = s + m_strlen(s);
+ ssize_t len = m_strlen(s);
- while (p > s && ISSPACE(p[-1])) {
- *--p = '\0';
- }
- return p;
- }
+ while (len > 1 && ISSPACE(s[len - 1]))
+ s[--len] = '\0';
- return
NULL
;
+ return
s + len
;
}
const char *m_stristrn(const char *haystack, const char *needle, ssize_t nlen)
}
const char *m_stristrn(const char *haystack, const char *needle, ssize_t nlen)
@@
-178,3
+195,5
@@
int ascii_strncasecmp (const char *a, const char *b, ssize_t n)
return 0;
}
return 0;
}
+
+/*@}*/