Browse Source

str: Add faux_str_cmp(), faux_str_cmpn()

Serj Kalichev 1 year ago
parent
commit
97363966b2
3 changed files with 47 additions and 0 deletions
  1. 2 0
      faux/faux.map
  2. 2 0
      faux/str.h
  3. 43 0
      faux/str/str.c

+ 2 - 0
faux/faux.map

@@ -288,6 +288,8 @@ FAUX_2.0 {
 		faux_str_sprintf;
 		faux_str_tolower;
 		faux_str_toupper;
+		faux_str_cmpn;
+		faux_str_cmp;
 		faux_str_casecmpn;
 		faux_str_casecmp;
 		faux_str_casestr;

+ 2 - 0
faux/str.h

@@ -31,6 +31,8 @@ char *faux_str_sprintf(const char *fmt, ...);
 char *faux_str_tolower(const char *str);
 char *faux_str_toupper(const char *str);
 
+int faux_str_cmpn(const char *str1, const char *str2, size_t n);
+int faux_str_cmp(const char *str1, const char *str2);
 int faux_str_casecmpn(const char *str1, const char *str2, size_t n);
 int faux_str_casecmp(const char *str1, const char *str2);
 char *faux_str_casestr(const char *haystack, const char *needle);

+ 43 - 0
faux/str/str.c

@@ -322,6 +322,49 @@ static int faux_str_cmp_chars(char char1, char char2)
 }
 
 
+/** @brief Compare n first characters of two strings.
+ *
+ * @param [in] str1 First string to compare.
+ * @param [in] str2 Second string to compare.
+ * @param [in] n Number of characters to compare.
+ * @return < 0, 0, > 0, see the strcasecmp().
+ */
+int faux_str_cmpn(const char *str1, const char *str2, size_t n)
+{
+	if (!str1 && !str2) // Empty strings are equal
+		return 0;
+
+	if (!str1) // Consider NULL string to be less then empty string
+		return -1;
+
+	if (!str2) // Consider NULL string to be less then empty string
+		return 1;
+
+	return strncmp(str1, str2, n);
+}
+
+
+/** @brief Compare two strings.
+ *
+ * @param [in] str1 First string to compare.
+ * @param [in] str2 Second string to compare.
+ * @return < 0, 0, > 0, see the strcmp().
+ */
+int faux_str_cmp(const char *str1, const char *str2)
+{
+	if (!str1 && !str2) // Empty strings are equal
+		return 0;
+
+	if (!str1) // Consider NULL string to be less then empty string
+		return -1;
+
+	if (!str2) // Consider NULL string to be less then empty string
+		return 1;
+
+	return strcmp(str1, str2);
+}
+
+
 /** @brief Compare n first characters of two strings ignoring case.
  *
  * The difference beetween this function an standard strncasecmp() is