Reverting back the fix
[csql.git] / src / server / os.cxx
blob99194d53e4f8f6fd18ce9af7a404abe19691cebb
1 /***************************************************************************
2 * Copyright (C) 2007 by www.databasecache.com *
3 * Contact: praba_tuty@databasecache.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 ***************************************************************************/
16 #include <os.h>
17 #include <Debug.h>
19 caddr_t os::mmap(caddr_t addr, size_t len, int prot, int flags, int fildes, off_t off)
21 return ((caddr_t)::mmap(addr,len,prot,flags,fildes,off));
24 int os::munmap(caddr_t addr, size_t len)
26 return ::munmap(addr, len);
30 shared_memory_id os::shm_create(shared_memory_key key, size_t size, int flag)
32 return ::shmget(key, size, IPC_CREAT | IPC_EXCL | flag);
33 //return ::shmget(key, size, IPC_CREAT | flag);
36 shared_memory_id os::shm_open(shared_memory_key key, size_t size, int flag)
38 return ::shmget(key, size, flag);
40 int os::shmctl(int shmid, int cmd)
42 return ::shmctl(shmid, cmd, NULL);
45 void* os::shm_attach(shared_memory_id id, const void *ptr, int flag)
47 return ::shmat(id, ptr, flag);
50 int os::shm_detach (void* addr)
52 return ::shmdt((char*)addr);
55 double os::floor(double val)
57 return ::floor(val);
60 int os::gettimeofday(struct timeval *tp)
62 int retval;
63 retval=::gettimeofday(tp, NULL);
64 return retval;
67 struct tm* os::localtime(long *secs)
69 return ::localtime(secs);
72 pid_t os::getpid()
74 return ::getpid();
76 pthread_t os::getthrid()
78 return ::pthread_self();
84 int os::openFile(const char *name, FileOpenMode flags, size_t size)
86 int retval = -1;
87 //mode_t mode = S_IRWXU | S_IRGRP | S_IWGRP ;
88 mode_t mode = (mode_t)0755 ;
89 retval=::open(name, flags, mode);
90 if (0 == size)
91 return retval;
92 os::lseek(retval, size-1, SEEK_SET);
93 char *buf = (char*)" ";
94 os::write(retval, buf, 1);
95 return retval;
98 int os::closeFile(int fd)
100 return ::close(fd);
103 off_t os::lseek(int fildes, off_t offset, int whence)
105 return ::lseek(fildes, offset, whence);
108 size_t os::write(int fildes, char *buf, size_t size)
110 return ::write(fildes, buf, size);
113 int os::msync(caddr_t addr, size_t len, int flags)
115 return ::msync(addr, len, flags);
117 int os::fsync(int fildes)
119 return ::fsync(fildes);
122 char* os::encrypt(const char *key, const char *salt)
124 return ::crypt(key, salt);
127 void* os::memset(void *src, int c, size_t size)
129 return::memset(src, c, size);
132 void* os::memcpy(void *src, const void *dest, size_t size)
134 return ::memcpy(src, dest, size);
137 int os::memcmp(const void *s1, const void *s2, size_t size)
139 return ::memcmp(s1, s2, size);
141 sighandler_t os::signal(int signum, sighandler_t handler)
143 return ::signal(signum, handler);
146 size_t os::alignLong(size_t size)
148 return ((size - 1) | (sizeof(long) - 1)) + 1;
151 size_t os::align(size_t size)
153 //Calls alignLong
154 return ((size - 1) | (sizeof(long) - 1)) + 1;
157 int os::select(int nfds, fd_set *readfds, fd_set *writefds,
158 fd_set *exceptfds, struct timeval * timeout)
160 return ::select(nfds, readfds, writefds, exceptfds, timeout);
164 char* os::getenv(const char *envVarName)
166 char *retVal;
167 retVal = ::getenv(envVarName);
168 return retVal;
171 int os::setenv(const char *envVarName, const char *value)
173 return ::setenv(envVarName, value,1);
176 int os::kill(pid_t pid, int sig)
178 return ::kill(pid, sig);
180 bool os::atobool(char *value)
182 if (strlen(value) ==3 && strncasecmp(value,"YES",3)==0) return true;
183 else if (strlen(value) ==2 && strncasecmp(value,"NO", 2)==0) return false;
184 else if (strlen(value) ==4 && strncasecmp(value,"true",4)==0) return true;
185 else if (strlen(value) ==5 && strncasecmp(value,"false",5)==0) return false;
186 return false;
188 pid_t os::createProcess(const char* cmdName, const char *arg0, ...)
190 pid_t pid;
191 pid = ::vfork();
192 if (pid == (pid_t) -1 )
194 printf("Process creation failed\n");
195 return -1;
197 if (pid >0)
199 //return for parent
200 return pid;
202 va_list ap;
203 va_start(ap,arg0);
205 const char *argv[5];
207 argv[0]=cmdName;
208 argv[1]=arg0;
210 argv[2]=NULL;
211 int i = 2;
212 while(argv[i++]=va_arg(ap,char *));
213 switch(i){
214 case 2:
215 pid=::execl(argv[0],argv[1]);break;
216 case 3:
217 pid=::execl(argv[0],argv[1],argv[2]);break;
218 case 4:
219 pid=::execl(argv[0],argv[1],argv[2],argv[3]);break;
220 case 5:
221 pid=::execl(argv[0],argv[1],argv[2],argv[3],argv[4]);break;
222 default:
223 printf("only three options allowed\n");
224 pid=-1;break;
226 if (pid < 0)
227 printf("Exec failed\n");
228 return pid;
231 pid_t os::fork()
233 return ::fork();
235 size_t os::send(int fd, const void *buf, size_t len, int flags)
237 return ::send(fd, buf, len, flags);
239 size_t os::recv(int fd, void *buf, size_t len, int flags)
241 return ::recv(fd, buf, len, flags);