1
0
Fork 0
mirror of git://git.code.sf.net/p/cdesktopenv/code synced 2025-03-09 15:50:02 +00:00

Fixes for dtfile on OpenBSD, plus missing prototypes. Use statfs() on BSD to find out if a file system is NFS.

This commit is contained in:
Pascal Stumpf 2012-08-10 15:09:04 +02:00 committed by Jon Trulson
parent 57463ec10e
commit eaec696ad6
10 changed files with 54 additions and 10 deletions

View file

@ -105,6 +105,7 @@
#include <Xm/PushBG.h>
#include <Xm/RowColumn.h>
#include <Xm/CascadeBG.h>
#include <Xm/LabelG.h>
#include <Xm/SeparatoG.h>
#include <Xm/VirtKeys.h>

View file

@ -64,7 +64,7 @@
# define ROOTINO UFSROOTINO
# endif /* sco */
#else
# if defined(linux)
# if defined(linux) || defined(CSRG_BASED)
# define ROOTINO 2
# endif
# include <sys/param.h>
@ -994,7 +994,8 @@ FileManip(
if (lstat (to, &s2) >= 0) /* <to> exists */
{
if ((stat (to, &s3) >= 0) &&
#if defined(__hp_osf) || (__ultrix) || defined(__osf__) || defined(linux)
#if defined(__hp_osf) || (__ultrix) || defined(__osf__) || defined(linux) || \
defined(CSRG_BASED)
(((s3.st_mode & S_IFMT) == S_IFDIR) /* if is a directory */
|| ((s3.st_mode & S_IFMT) == S_IFSOCK)) ) /* or a net special */
#else

View file

@ -106,6 +106,7 @@
#include "Filter.h"
#include "Help.h"
char **DtDtsDataTypeNames(void);
static char * FILE_FILTER = "FileFilter";

View file

@ -1811,7 +1811,7 @@ ExecuteFind(
if (access_priv == -1 && geteuid() != root_user)
{
#else
# if defined(__hp_osf) || defined(__ultrix) || defined(__osf__) || defined(linux)
# if defined(__hp_osf) || defined(__ultrix) || defined(__osf__) || defined(linux) || defined(CSRG_BASED)
setreuid(geteuid(),-1);
if (access ((char *) path, R_OK) == -1)
{
@ -1908,10 +1908,10 @@ ExecuteFind(
#ifdef __osf__
oldSig = signal(SIGCHLD, sigchld_handler);
#else
oldSig = signal(SIGCLD, SIG_DFL);
oldSig = signal(SIGCHLD, SIG_DFL);
#endif /* __osf__ */
find_rec->popenId = findpopen(command, "r",&(find_rec->childpid));
signal (SIGCLD, oldSig);
signal (SIGCHLD, oldSig);
if (find_rec->popenId == NULL)
{

View file

@ -1020,7 +1020,7 @@ main(
/* error handling follows, none for now */
;
#else
(void) signal (SIGCLD, SIG_IGN);
(void) signal (SIGCHLD, SIG_IGN);
#endif /* __osf__ */
XtSetLanguageProc( NULL, NULL, NULL );

View file

@ -107,13 +107,13 @@ RunFileCommand(
/* prepare to catch the command termination */
oldSig = signal (SIGCLD, SIG_DFL);
oldSig = signal (SIGCHLD, SIG_DFL);
/* fork a process to run command */
if ((child = fork ()) < 0) /* fork failed */
{
(void) signal (SIGCLD, oldSig);
(void) signal (SIGCHLD, oldSig);
return (-1);
}
@ -126,7 +126,7 @@ RunFileCommand(
wait_return = wait (&exit_value);
} while (wait_return != child);
(void) signal (SIGCLD, oldSig); /* child stopped or terminated */
(void) signal (SIGCHLD, oldSig); /* child stopped or terminated */
return (exit_value); /* if exit_value == 0 then success */
}

View file

@ -130,6 +130,8 @@ extern XmWidgetExtData _XmGetWidgetExtData(
#include "Main.h"
#include "SharedProcs.h"
extern char *pathcollapse();
/* Defines */
#define RW_ALL S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH

View file

@ -50,6 +50,9 @@
/******** Public Function Declarations ********/
extern String _DtStripSpaces(
String string) ;
extern char * _DtPName(
register char *name) ;
extern char * _DtFollowLink(

View file

@ -101,7 +101,12 @@
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#if defined(CSRG_BASED)
#include <sys/param.h>
#include <sys/mount.h>
#else
#include <ustat.h>
#endif
#include <Xm/RowColumn.h>
#include <Xm/CascadeB.h>
@ -4106,17 +4111,29 @@ CheckDeletePermission(
char *parentdir,
char *destinationPath)
{
#if defined(CSRG_BASED)
struct statfs statbuf;
#else
struct stat statbuf;
#endif
char fname[1024];
#if defined(CSRG_BASED)
if (statfs(parentdir,&statbuf) < 0) /* does not exist */
#else
if (lstat(parentdir,&statbuf) < 0) /* does not exist */
#endif
return -1;
/* check if we are root */
if (getuid() == 0)
{
/* if NFS, need to check if server trusts root */
#if defined(CSRG_BASED)
if (!strcmp(statbuf.f_fstypename, "nfs")) /* Root user and nfs */
#else
if (FileSysType(statbuf.st_dev) < 0) /* Root user and nfs */
#endif
{
char *tmpfile;
tmpfile = tempnam(parentdir,"quang");
@ -4195,6 +4212,7 @@ CheckDeletePermissionRecur(
return 0;
}
#if !defined(CSRG_BASED)
static int
FileSysType(
int dev)
@ -4204,6 +4222,7 @@ FileSysType(
return -2;
return u1.f_tinode;
}
#endif
static int
RestoreObject(

View file

@ -69,7 +69,7 @@
# define ROOTINO UFSROOTINO
#endif
#if defined(linux)
#if defined(linux) || defined(CSRG_BASED)
# include <sys/param.h>
# define ROOTINO 2
#endif
@ -80,9 +80,12 @@
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/mount.h>
#include <pwd.h>
#include <fcntl.h>
#if !defined(CSRG_BASED)
#include <ustat.h>
#endif
#include <dirent.h>
@ -373,6 +376,7 @@ ImageInitialize( Display *display )
return ;
} /* end ImageInitialize */
#if !defined(CSRG_BASED)
static int
CopyFileSysType(
int dev)
@ -382,6 +386,7 @@ CopyFileSysType(
return -2;
return u1.f_tinode;
}
#endif
static int
CopyCheckDeletePermissionRecur(
@ -446,17 +451,29 @@ CopyCheckDeletePermission(
char *parentdir,
char *destinationPath)
{
#if defined(CSRG_BASED)
struct statfs statbuf;
#else
struct stat statbuf;
#endif
char fname[1024];
#if defined(CSRG_BASED)
if (statfs(parentdir,&statbuf) < 0) /* does not exist */
#else
if (lstat(parentdir,&statbuf) < 0) /* does not exist */
#endif
return -1;
/* check if we are root */
if (getuid() == 0)
{
/* if NFS, need to check if server trusts root */
#if defined(CSRG_BASED)
if (!strcmp(statbuf.f_fstypename, "nfs")) /* Root user and nfs */
#else
if (CopyFileSysType(statbuf.st_dev) < 0) /* Root user and nfs */
#endif
{
char *tmpfile;
tmpfile = tempnam(parentdir,"quang");