1/* 2 Unix SMB/CIFS implementation. 3 4 some replacement functions for parts of roken that don't fit easily into 5 our build system 6 7 Copyright (C) Andrew Tridgell 2005 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. 21*/ 22 23#include "config.h" 24#include "err.h" 25#include "roken.h" 26#include "system/filesys.h" 27 28#ifndef HAVE_ERR 29 void err(int eval, const char *format, ...) 30{ 31 va_list ap; 32 va_start(ap, format); 33 vfprintf(stderr, format, ap); 34 perror(""); 35 va_end(ap); 36 exit(eval); 37} 38#endif 39 40#ifndef HAVE_ERRX 41 void errx(int eval, const char *format, ...) 42{ 43 va_list ap; 44 va_start(ap, format); 45 vfprintf(stderr, format, ap); 46 va_end(ap); 47 exit(eval); 48} 49#endif 50 51#ifndef HAVE_WARNX 52 void warnx(const char *format, ...) 53{ 54 va_list ap; 55 va_start(ap, format); 56 vfprintf(stderr, format, ap); 57 va_end(ap); 58} 59#endif 60 61#ifndef HAVE_FLOCK 62 int flock(int fd, int op) 63{ 64#undef flock 65 struct flock lock; 66 lock.l_whence = 0; 67 lock.l_start = 0; 68 lock.l_len = 0; 69 lock.l_pid = 0; 70 71 switch (op & (LOCK_UN|LOCK_SH|LOCK_EX)) { 72 case LOCK_UN: 73 lock.l_type = F_UNLCK; 74 return fcntl(fd, F_SETLK, &lock); 75 case LOCK_SH: 76 lock.l_type = F_RDLCK; 77 return fcntl(fd, (op&LOCK_NB)?F_SETLK:F_SETLKW, &lock); 78 case LOCK_EX: 79 lock.l_type = F_WRLCK; 80 return fcntl(fd, (op&LOCK_NB)?F_SETLK:F_SETLKW, &lock); 81 } 82 errno = EINVAL; 83 return -1; 84} 85#endif 86 87const char *heimdal_version = "samba-internal-heimdal"; 88const char *heimdal_long_version = "samba-interal-heimdal"; 89 90