Browse Source

mem: add memends_str() helper for symmetry

Signed-off-by: Cody P Schafer <dev@codyps.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Cody P Schafer 10 years ago
parent
commit
4ad5144790
2 changed files with 22 additions and 1 deletions
  1. 17 0
      ccan/mem/mem.h
  2. 5 1
      ccan/mem/test/api.c

+ 17 - 0
ccan/mem/mem.h

@@ -183,4 +183,21 @@ static inline bool memends(const void *s, size_t s_len, const void *suffix, size
 						suffix, suffix_len) == 0);
 						suffix, suffix_len) == 0);
 }
 }
 
 
+/**
+ * memends_str - Does this byte array end with a string suffix?
+ * @a: byte array
+ * @al: length in bytes
+ * @s: string suffix
+ *
+ * Example:
+ *	if (memends_str(somebytes, bytes_len, "It")) {
+ *		printf("somebytes ends with with 'It'\n");
+ *	}
+ */
+PURE_FUNCTION
+static inline bool memends_str(const void *a, size_t al, const char *s)
+{
+	return memends(a, al, s, strlen(s));
+}
+
 #endif /* CCAN_MEM_H */
 #endif /* CCAN_MEM_H */

+ 5 - 1
ccan/mem/test/api.c

@@ -12,7 +12,7 @@ int main(void)
 	char scan2[] = "\0\0\0b";
 	char scan2[] = "\0\0\0b";
 
 
 	/* This is how many tests you plan to run */
 	/* This is how many tests you plan to run */
-	plan_tests(42);
+	plan_tests(46);
 
 
 	ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1);
 	ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1);
 	ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL);
 	ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL);
@@ -71,6 +71,10 @@ int main(void)
 	ok1(!memends(S("a\0bcdef"), S("a\0b")));
 	ok1(!memends(S("a\0bcdef"), S("a\0b")));
 	ok1(memends(S("a\0bcdef"), S("ef")));
 	ok1(memends(S("a\0bcdef"), S("ef")));
 
 
+	ok1(memends_str(S("abcdef"), "abcdef"));
+	ok1(!memends_str(S("abcde\0f"), "d\0f"));
+	ok1(!memends_str(S("a\0bcdef"), "a"));
+	ok1(memends_str(S("a\0bcdef"), "ef"));
 
 
 	/* This exits depending on whether all tests passed */
 	/* This exits depending on whether all tests passed */
 	return exit_status();
 	return exit_status();