1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/curses/extconf.rb: add dir_config.

* missing/flock.c: use fcntl(2) instead of lockf(2).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
eban 2001-02-18 08:18:52 +00:00
parent 382b830b0f
commit df1adeb01e
3 changed files with 60 additions and 49 deletions

View file

@ -1,3 +1,9 @@
Sun Feb 18 15:42:38 2001 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/curses/extconf.rb: add dir_config.
* missing/flock.c: use fcntl(2) instead of lockf(2).
Fri Feb 16 01:44:56 2001 Yukihiro Matsumoto <matz@ruby-lang.org>
* io.c (set_outfile): f should be the FILE* from the assigning value.

View file

@ -1,5 +1,9 @@
require 'mkmf'
dir_config('curses')
dir_config('ncurses')
dir_config('termcap')
make=false
have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
if have_header("ncurses.h") and have_library("ncurses", "initscr")

View file

@ -1,6 +1,55 @@
#include "config.h"
#if defined(HAVE_LOCKF)
#if defined HAVE_FCNTL && defined HAVE_FCNTL_H
/* These are the flock() constants. Since this sytems doesn't have
flock(), the values of the constants are probably not available.
*/
# ifndef LOCK_SH
# define LOCK_SH 1
# endif
# ifndef LOCK_EX
# define LOCK_EX 2
# endif
# ifndef LOCK_NB
# define LOCK_NB 4
# endif
# ifndef LOCK_UN
# define LOCK_UN 8
# endif
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
int
flock(fd, operation)
int fd;
int operation;
{
struct flock lock;
switch (operation & ~LOCK_NB) {
case LOCK_SH:
lock.l_type = F_RDLCK;
break;
case LOCK_EX:
lock.l_type = F_WRLCK;
break;
case LOCK_UN:
lock.l_type = F_UNLCK;
break;
default:
errno = EINVAL;
return -1;
}
lock.l_whence = SEEK_SET;
lock.l_start = lock.l_len = 0L;
return fcntl(fd, (operation & LOCK_NB) ? F_SETLK : F_SETLKW, &lock);
}
#elif defined(HAVE_LOCKF)
#include <unistd.h>
#include <errno.h>
@ -78,54 +127,6 @@ flock(fd, operation)
}
return i;
}
#elif defined HAVE_FCNTL && defined HAVE_FCNTL_H
/* These are the flock() constants. Since this sytems doesn't have
flock(), the values of the constants are probably not available.
*/
# ifndef LOCK_SH
# define LOCK_SH 1
# endif
# ifndef LOCK_EX
# define LOCK_EX 2
# endif
# ifndef LOCK_NB
# define LOCK_NB 4
# endif
# ifndef LOCK_UN
# define LOCK_UN 8
# endif
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
int
flock(fd, operation)
int fd;
int operation;
{
struct flock lock;
switch (operation & ~LOCK_NB) {
case LOCK_SH:
lock.l_type = F_RDLCK;
break;
case LOCK_EX:
lock.l_type = F_WRLCK;
break;
case LOCK_UN:
lock.l_type = F_UNLCK;
break;
default:
errno = EINVAL;
return -1;
}
lock.l_whence = SEEK_SET;
lock.l_start = lock.l_len = 0L;
return fcntl(fd, (operation & LOCK_NB) ? F_SETLK : F_SETLKW, &lock);
}
#elif !defined NT
int
flock(fd, operation)