X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.main.git;a=blobdiff_plain;f=pctb%2Fcommon.c;fp=pctb%2Fcommon.c;h=7fa5b44bc6b393a922ee8ea8db120b7fec377205;hp=0000000000000000000000000000000000000000;hb=74e4e249f2c3e848592984cb193aded6a77a341d;hpb=2aaae8ee04d0a6a8ab85751ceb67f222d259eba8 diff --git a/pctb/common.c b/pctb/common.c new file mode 100644 index 0000000..7fa5b44 --- /dev/null +++ b/pctb/common.c @@ -0,0 +1,57 @@ +/* + * Utility functions + */ +/* + * This is part of ypp-sc-tools, a set of third-party tools for assisting + * players of Yohoho Puzzle Pirates. + * + * Copyright (C) 2009 Ian Jackson + * + * 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 . + * + * Yohoho and Puzzle Pirates are probably trademarks of Three Rings and + * are used without permission. This program is not endorsed or + * sponsored by Three Rings. + */ + +#include "common.h" + +#define dbassert(x) \ + ((x) ? (void)0 : \ + fatal("Error in database.\n" \ + " Requirement not met: %s:%d: %s", __FILE__,__LINE__, #x)) + +void fgetsline(FILE *f, char *lbuf, size_t lbufsz) { + errno=0; + char *s= fgets(lbuf,lbufsz,f); + sysassert(!ferror(f)); + dbassert(!feof(f)); + assert(s); + int l= strlen(lbuf); + dbassert(l>0); dbassert(lbuf[--l]='\n'); + lbuf[l]= 0; +} + +void *mmalloc(size_t sz) { + void *r; + if (!sz) return 0; + sysassert( r= malloc(sz) ); + return r; +} +void *mrealloc(void *p, size_t sz) { + assert(sz); + void *r; + sysassert( r= realloc(p,sz) ); + return r; +}