summaryrefslogtreecommitdiffstats
path: root/libblkid/mangle.c
diff options
context:
space:
mode:
authorbigbiff <bigbiff@teamw.in>2015-01-02 01:44:14 +0100
committerDees Troy <dees_troy@teamw.in>2015-01-05 04:38:42 +0100
commit7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de (patch)
treefb69cb515cb4ab675d5850684cc402100b7a2a22 /libblkid/mangle.c
parentcrypto: remove unused libs and clean up makefile (diff)
downloadandroid_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.tar
android_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.tar.gz
android_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.tar.bz2
android_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.tar.lz
android_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.tar.xz
android_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.tar.zst
android_bootable_recovery-7b4c7a681cc4c0a53dc8a8baf4853e921cfbf5de.zip
Diffstat (limited to 'libblkid/mangle.c')
-rw-r--r--libblkid/mangle.c166
1 files changed, 0 insertions, 166 deletions
diff --git a/libblkid/mangle.c b/libblkid/mangle.c
deleted file mode 100644
index 5236e97bf..000000000
--- a/libblkid/mangle.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Functions for \oct encoding used in mtab/fstab/swaps/etc.
- *
- * Based on code from mount(8).
- *
- * Copyright (C) 2010 Karel Zak <kzak@redhat.com>
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "mangle.h"
-#include "c.h"
-
-#define isoctal(a) (((a) & ~7) == '0')
-
-#define from_hex(c) (isdigit(c) ? c - '0' : tolower(c) - 'a' + 10)
-
-#define is_unwanted_char(x) (strchr(" \t\n\\", (unsigned int) x) != NULL)
-
-
-char *mangle(const char *s)
-{
- char *ss, *sp;
-
- if (!s)
- return NULL;
-
- ss = sp = malloc(4 * strlen(s) + 1);
- if (!sp)
- return NULL;
- while(1) {
- if (!*s) {
- *sp = '\0';
- break;
- }
- if (is_unwanted_char(*s)) {
- *sp++ = '\\';
- *sp++ = '0' + ((*s & 0300) >> 6);
- *sp++ = '0' + ((*s & 070) >> 3);
- *sp++ = '0' + (*s & 07);
- } else
- *sp++ = *s;
- s++;
- }
- return ss;
-}
-
-
-void unmangle_to_buffer(const char *s, char *buf, size_t len)
-{
- size_t sz = 0;
-
- if (!s)
- return;
-
- while(*s && sz < len - 1) {
- if (*s == '\\' && sz + 3 < len - 1 && isoctal(s[1]) &&
- isoctal(s[2]) && isoctal(s[3])) {
-
- *buf++ = 64*(s[1] & 7) + 8*(s[2] & 7) + (s[3] & 7);
- s += 4;
- sz += 4;
- } else {
- *buf++ = *s++;
- sz++;
- }
- }
- *buf = '\0';
-}
-
-void unhexmangle_to_buffer(const char *s, char *buf, size_t len)
-{
- size_t sz = 0;
-
- if (!s)
- return;
-
- while(*s && sz < len - 1) {
- if (*s == '\\' && sz + 3 < len - 1 && s[1] == 'x' &&
- isxdigit(s[2]) && isxdigit(s[3])) {
-
- *buf++ = from_hex(s[2]) << 4 | from_hex(s[3]);
- s += 4;
- sz += 4;
- } else {
- *buf++ = *s++;
- sz++;
- }
- }
- *buf = '\0';
-}
-
-static inline char *skip_nonspaces(const char *s)
-{
- while (*s && !(*s == ' ' || *s == '\t'))
- s++;
- return (char *) s;
-}
-
-/*
- * Returns mallocated buffer or NULL in case of error.
- */
-char *unmangle(const char *s, char **end)
-{
- char *buf;
- char *e;
- size_t sz;
-
- if (!s)
- return NULL;
-
- e = skip_nonspaces(s);
- sz = e - s + 1;
-
- if (end)
- *end = e;
- if (e == s)
- return NULL; /* empty string */
-
- buf = malloc(sz);
- if (!buf)
- return NULL;
-
- unmangle_to_buffer(s, buf, sz);
- return buf;
-}
-
-#ifdef TEST_PROGRAM
-#include <errno.h>
-int main(int argc, char *argv[])
-{
- char *p = NULL;
- if (argc < 3) {
- fprintf(stderr, "usage: %s --mangle|unmangle <string>\n",
- program_invocation_short_name);
- return EXIT_FAILURE;
- }
-
- if (!strcmp(argv[1], "--mangle")) {
- p = mangle(argv[2]);
- printf("mangled: '%s'\n", p);
- free(p);
- }
-
- else if (!strcmp(argv[1], "--unmangle")) {
- char *x = unmangle(argv[2], NULL);
-
- if (x) {
- printf("unmangled: '%s'\n", x);
- free(x);
- }
-
- x = strdup(argv[2]);
- unmangle_to_buffer(x, x, strlen(x) + 1);
-
- if (x) {
- printf("self-unmangled: '%s'\n", x);
- free(x);
- }
- }
-
- return EXIT_SUCCESS;
-}
-#endif /* TEST_PROGRAM */