Tue, 15 Feb 2005 18:57:52 +0100
Tailorization of trunk
Import of the upstream sources from the repository
http://tao.uab.es/ion/svn/libtu/trunk
as of revision 2
/* * libtu/misc.c * * Copyright (c) Tuomo Valkonen 1999-2000. * * This file is distributed under the terms of the "Artistic License". * See the included file LICENSE for details. */ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <malloc.h> #include "include/misc.h" void *malloczero(int size) { void *p=malloc(size); if(p!=NULL) memset(p, 0, size); return p; } void *remalloczero(void *ptr, int oldsize, int newsize) { void *p=NULL; if(newsize!=0){ p=malloc(newsize); if(p==NULL) return NULL; memset(p, 0, newsize); if(ptr!=NULL && oldsize<newsize) memcpy(p, ptr, oldsize); } if(ptr!=NULL) free(ptr); return p; } char *scopy(const char *p) { char*pn; size_t l=strlen(p); pn=(char*)malloc(l+1); if(pn==NULL) return NULL; memcpy(pn, p, l+1); return pn; } char *scat(const char *p1, const char *p2) { size_t l1, l2; char*pn; l1=strlen(p1); l2=strlen(p2); pn=(char*)malloc(l1+l2+1); if(pn==NULL) return NULL; memcpy(pn, p1, l1); memcpy(pn+l1, p2, l2+1); return pn; } char *scat3(const char *p1, const char *p2, const char *p3) { size_t l1, l2, l3; char *pn; l1=strlen(p1); l2=strlen(p2); l3=strlen(p3); pn=(char*)malloc(l1+l2+l3+1); if(pn==NULL) return NULL; memcpy(pn, p1, l1); memcpy(pn+l1, p2, l2); memcpy(pn+l1+l2, p3, l3+1); return pn; } /* */ const char *simple_basename(const char *name) { const char *p; p=name+strlen(name)-1; /* Skip any trailing slashes */ while(*p=='/'){ /* root? */ if(p==name) return name; p--; } while(p!=name){ if(*p=='/') return p+1; p--; } return name; } /* */ bool readf(FILE *f, void *buf, size_t n) { return fread(buf, 1, n, f)!=1; } bool writef(FILE *f, const void *buf, size_t n) { return fwrite(buf, 1, n, f)!=1; }