学习sed源码第三天之malloc和错误处理
今天继续重写sed源码,
1. ck_malloc
处理malloc失败,简单的
2. panic
简单的错误处理, APUE中已经有差不多代码
总之第三天是个轻松天
添加了utils.c文件,在想是不是该写Makefile了,等等把。
/** * filename: utils.c * * created by jeff * date: 2013.1.25 * reason: first version * ***********************************************************/#if __STDC__#define VOID void#else#define VOID char#endif#include <stdio.h>#include <unistd.h>#include <stdarg.h>VOID *ck_malloc(int size);VOID panic(char*, ...);char* myname;/** * malloc 失败处理 * */VOID *ck_malloc(int size){ VOID *ret; if(!size) size++; ret=malloc(size); if(ret ==(VOID*)0) panic("Couldnot allocate memory"); return ret;}/** * 错误处理代码 * */void panic(char* str, ... ){ va_list ap; fprintf(stderr, "%s: ", myname); va_start(ap, str); vfprintf(stderr, str, ap); va_end(ap); putc('\n', stderr); exit(4);}