Cleans up a filename with readable characters.
strncmp (string, prefix, b) == 0 &&
is_path_component_or_null (string[b]);
}
+
+void
+p11_path_canon (char *name)
+{
+ static const char *VALID =
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_";
+ int i;
+
+ return_if_fail (name != NULL);
+
+ for (i = 0; name[i] != '\0'; i++) {
+ if (strchr (VALID, name[i]) == NULL)
+ name[i] = '_';
+ }
+}
bool p11_path_prefix (const char *string,
const char *prefix);
+void p11_path_canon (char *name);
+
#endif /* P11_PATH_H__ */
assert (p11_path_prefix ("/test//other//second", "/test"));
}
+static void
+test_canon (void)
+{
+ char *test;
+
+ test = strdup ("2309haonutb;AOE@#$O ");
+ p11_path_canon (test);
+ assert_str_eq (test, "2309haonutb_AOE___O_");
+ free (test);
+
+ test = strdup ("22@# %ATI@#$onot");
+ p11_path_canon (test);
+ assert_str_eq (test, "22____ATI___onot");
+ free (test);
+}
+
int
main (int argc,
char *argv[])
p11_test (test_absolute, "/path/absolute");
p11_test (test_parent, "/path/parent");
p11_test (test_prefix, "/path/prefix");
+ p11_test (test_canon, "/path/canon");
return p11_test_run (argc, argv);
}
#include "dict.h"
#include "extract.h"
#include "message.h"
+#include "path.h"
#include "pkcs11.h"
#include "pkcs11x.h"
#include "x509.h"
return strdup ("unknown");
}
-#define FILENAME_CHARS \
- "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_"
-
char *
p11_extract_info_filename (p11_extract_info *extract)
{
char *label;
- int i;
label = extract_label (extract);
return_val_if_fail (label != NULL, NULL);
- for (i = 0; label[i] != '\0'; i++) {
- if (strchr (FILENAME_CHARS, label[i]) == NULL)
- label[i] = '_';
- }
-
+ p11_path_canon (label);
return label;
}