From 9c754053b07a724bdd98d039f34899d6a49115b7 Mon Sep 17 00:00:00 2001 From: bigbiff bigbiff Date: Wed, 9 Jan 2013 09:09:08 -0500 Subject: Add libtar to TWRP instead of using busybox tar Add proper mkdosfs tool Add fuse to TWRP Add experimental exfat-fuse to TWRP Convert all system() functions to use new Exec_Cmd function --- dosfstools/src/common.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 dosfstools/src/common.c (limited to 'dosfstools/src/common.c') diff --git a/dosfstools/src/common.c b/dosfstools/src/common.c new file mode 100644 index 000000000..51605a2aa --- /dev/null +++ b/dosfstools/src/common.c @@ -0,0 +1,118 @@ +/* common.c - Common functions + + Copyright (C) 1993 Werner Almesberger + Copyright (C) 1998 Roman Hodek + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + On Debian systems, the complete text of the GNU General Public License + can be found in /usr/share/common-licenses/GPL-3 file. +*/ + +/* FAT32, VFAT, Atari format support, and various fixes additions May 1998 + * by Roman Hodek */ + +#include +#include +#include +#include +#include + +#include "common.h" + +typedef struct _link { + void *data; + struct _link *next; +} LINK; + +void die(char *msg, ...) +{ + va_list args; + + va_start(args, msg); + vfprintf(stderr, msg, args); + va_end(args); + fprintf(stderr, "\n"); + exit(1); +} + +void pdie(char *msg, ...) +{ + va_list args; + + va_start(args, msg); + vfprintf(stderr, msg, args); + va_end(args); + fprintf(stderr, ":%s\n", strerror(errno)); + exit(1); +} + +void *alloc(int size) +{ + void *this; + + if ((this = malloc(size))) + return this; + pdie("malloc"); + return NULL; /* for GCC */ +} + +void *qalloc(void **root, int size) +{ + LINK *link; + + link = alloc(sizeof(LINK)); + link->next = *root; + *root = link; + return link->data = alloc(size); +} + +void qfree(void **root) +{ + LINK *this; + + while (*root) { + this = (LINK *) * root; + *root = this->next; + free(this->data); + free(this); + } +} + +int min(int a, int b) +{ + return a < b ? a : b; +} + +char get_key(char *valid, char *prompt) +{ + int ch, okay; + + while (1) { + if (prompt) + printf("%s ", prompt); + fflush(stdout); + while (ch = getchar(), ch == ' ' || ch == '\t') ; + if (ch == EOF) + exit(1); + if (!strchr(valid, okay = ch)) + okay = 0; + while (ch = getchar(), ch != '\n' && ch != EOF) ; + if (ch == EOF) + exit(1); + if (okay) + return okay; + printf("Invalid input.\n"); + } +} -- cgit v1.2.3