(2006-08-06) rescue-bootcd
This commit is contained in:
43
extra/syslinux-3.09/com32/lib/fopendev.c
Normal file
43
extra/syslinux-3.09/com32/lib/fopendev.c
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* fopendev.c
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
FILE *fopendev(const struct dev_info *dev, const char *mode)
|
||||
{
|
||||
int flags = O_RDONLY;
|
||||
int plus = 0;
|
||||
int fd;
|
||||
|
||||
while ( *mode ) {
|
||||
switch ( *mode ) {
|
||||
case 'r':
|
||||
flags = O_RDONLY;
|
||||
break;
|
||||
case 'w':
|
||||
flags = O_WRONLY|O_CREAT|O_TRUNC;
|
||||
break;
|
||||
case 'a':
|
||||
flags = O_WRONLY|O_CREAT|O_APPEND;
|
||||
break;
|
||||
case '+':
|
||||
plus = 1;
|
||||
break;
|
||||
}
|
||||
mode++;
|
||||
}
|
||||
|
||||
if ( plus ) {
|
||||
flags = (flags & ~(O_RDONLY|O_WRONLY)) | O_RDWR;
|
||||
}
|
||||
|
||||
fd = opendev(file, flags);
|
||||
|
||||
if ( fd < 0 )
|
||||
return NULL;
|
||||
else
|
||||
return fdopen(fd, mode);
|
||||
}
|
||||
Reference in New Issue
Block a user