|
@@ -493,6 +493,33 @@ char *strsep(char **s, const char *ct)
|
|
EXPORT_SYMBOL(strsep);
|
|
EXPORT_SYMBOL(strsep);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * sysfs_streq - return true if strings are equal, modulo trailing newline
|
|
|
|
+ * @s1: one string
|
|
|
|
+ * @s2: another string
|
|
|
|
+ *
|
|
|
|
+ * This routine returns true iff two strings are equal, treating both
|
|
|
|
+ * NUL and newline-then-NUL as equivalent string terminations. It's
|
|
|
|
+ * geared for use with sysfs input strings, which generally terminate
|
|
|
|
+ * with newlines but are compared against values without newlines.
|
|
|
|
+ */
|
|
|
|
+bool sysfs_streq(const char *s1, const char *s2)
|
|
|
|
+{
|
|
|
|
+ while (*s1 && *s1 == *s2) {
|
|
|
|
+ s1++;
|
|
|
|
+ s2++;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (*s1 == *s2)
|
|
|
|
+ return true;
|
|
|
|
+ if (!*s1 && *s2 == '\n' && !s2[1])
|
|
|
|
+ return true;
|
|
|
|
+ if (*s1 == '\n' && !s1[1] && !*s2)
|
|
|
|
+ return true;
|
|
|
|
+ return false;
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL(sysfs_streq);
|
|
|
|
+
|
|
#ifndef __HAVE_ARCH_MEMSET
|
|
#ifndef __HAVE_ARCH_MEMSET
|
|
/**
|
|
/**
|
|
* memset - Fill a region of memory with the given value
|
|
* memset - Fill a region of memory with the given value
|