File:  [ELWIX - Embedded LightWeight unIX -] / libaitsync / src / file.c
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed Mar 24 16:00:15 2010 UTC (14 years, 3 months ago) by misho
Branches: MAIN
CVS tags: HEAD
Initial revision

    1: /*************************************************************************
    2: * (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
    3: *  by Michael Pounov <misho@openbsd-bg.org>
    4: *
    5: * $Author: misho $
    6: * $Id: file.c,v 1.1 2010/03/24 16:00:15 misho Exp $
    7: *
    8: *************************************************************************/
    9: #include "global.h"
   10: #include "file.h"
   11: 
   12: 
   13: int syncOpen(const char *csFile, int mode)
   14: {
   15: 	int f;
   16: 
   17: 	if (!csFile || (*csFile == '-' && !csFile[1]))
   18: 		return mode;
   19: 
   20: 	f = open(csFile, !mode ? O_RDONLY : O_WRONLY | O_CREAT | O_TRUNC, 0644);
   21: 	if (f == -1)
   22: 		SETERR;
   23: 
   24: 	return f;
   25: }
   26: 
   27: inline int syncTemp(char * __restrict psName, int len)
   28: {
   29: 	char str[] = "/tmp/ansyncXXXXXX.dlt";
   30: 	int f;
   31: 
   32: 	f = mkstemps(str, 4);
   33: 	strlcpy(psName, str, len);
   34: 
   35: 	return f;
   36: }
   37: 
   38: void syncClose(int f)
   39: {
   40: 	if (f > 2)
   41: 		close(f);
   42: }
   43: 
   44: int syncEOF(int f)
   45: {
   46: 	off_t old;
   47: 	int ret = 0;
   48: 
   49: 	old = lseek(f, 0, SEEK_CUR);
   50: 	ret = lseek(f, 0, SEEK_END) - old;
   51: 	if (lseek(f, old, SEEK_SET) == -1) {
   52: 		SETERR;
   53: 		return -1;
   54: 	}
   55: 
   56: 	return !ret;
   57: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>