common.c
来自「linux dosfs 工具,可以移植到嵌入式系统下检查存储状态下的磁盘状况,修」· C语言 代码 · 共 108 行
C
108 行
/* common.c - Common functions *//* Written 1993 by Werner Almesberger *//* FAT32, VFAT, Atari format support, and various fixes additions May 1998 * by Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de> */#include <stdlib.h>#include <stdio.h>#include <string.h>#include <stdarg.h>#include <errno.h>#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"); }}/* Local Variables: *//* tab-width: 8 *//* End: */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?