summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorSamba Release Account <samba-bugs@samba.org>1997-07-08 16:54:44 +0000
committerSamba Release Account <samba-bugs@samba.org>1997-07-08 16:54:44 +0000
commit25eae02948b40667495fbb021dd130180180a05e (patch)
treed0dffa4caed0faf7473d162528551c850c9a914b /source3/smbd
parenta67a697b3624c51d38cacd4aea134286a372b756 (diff)
downloadsamba-25eae02948b40667495fbb021dd130180180a05e.tar.gz
samba-25eae02948b40667495fbb021dd130180180a05e.tar.bz2
samba-25eae02948b40667495fbb021dd130180180a05e.zip
Makefile: Added AIX targets from Ole Holm Nielsen <Ole.H.Nielsen@uni-c.dk>
chgpasswd.c: Added Samba/GPL notice (for obvious reasons). clitar.c: Updated Copyright date to include 1997 (for obvious reasons). getsmbpass.c: Updated Copyright date to include 1997 (for obvious reasons). includes.h: Added stropts for solaris. loadparm.c: Changed comment for hide files option. nameconf.c: Updated Copyright date to include 1997 (for obvious reasons). nmbd.c: Updated Copyright date to include 1997 (for obvious reasons). pcap.c: Updated Copyright date to include 1997 (for obvious reasons). proto.h: Re-added accidentaly deleted smb_shm_ calls. quotas.c: Added AIX quota patch from Ole Holm Nielsen <ohnielse@fysik.dtu.dk> server.c: Optimization on calling is_hidden_path. Updated Copyrights. smb.h: Changed DEFAULT_FILES_TO_HIDE from "*/.*" to ".*". smbpass.c: Updated Copyright date to include 1997 (for obvious reasons). ufc.c: Updated Copyright date to include 1997 (for obvious reasons). util.c: Added last component code to is_in_path(). Jeremy (jallison@whistle.com) (This used to be commit 9385ae1005f13c8ed51f1319e3949b5c8571e62d)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/chgpasswd.c43
-rw-r--r--source3/smbd/quotas.c23
-rw-r--r--source3/smbd/server.c6
3 files changed, 53 insertions, 19 deletions
diff --git a/source3/smbd/chgpasswd.c b/source3/smbd/chgpasswd.c
index 79ea66253d..6063f2aac8 100644
--- a/source3/smbd/chgpasswd.c
+++ b/source3/smbd/chgpasswd.c
@@ -1,3 +1,24 @@
+/*
+ Unix SMB/Netbios implementation.
+ Version 1.9.
+ Samba utility functions
+ Copyright (C) Andrew Tridgell 1992-1997
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
/* fork a child process to exec passwd and write to its
* tty to change a users password. This is running as the
* user who is attempting to change the password.
@@ -38,22 +59,22 @@ extern int DEBUGLEVEL;
static int findpty(char **slave)
{
int master;
-#ifdef SVR4
+#if defined(SVR4) || defined(SUNOS5)
extern char *ptsname();
-#else
+#else /* defined(SVR4) || defined(SUNOS5) */
static char line[12];
void *dirp;
char *dpname;
-#endif
+#endif /* defined(SVR4) || defined(SUNOS5) */
-#ifdef SVR4
+#if defined(SVR4) || defined(SUNOS5)
if ((master = open("/dev/ptmx", O_RDWR)) >= 1) {
grantpt(master);
unlockpt(master);
*slave = ptsname(master);
return (master);
}
-#else
+#else /* defined(SVR4) || defined(SUNOS5) */
strcpy( line, "/dev/ptyXX" );
dirp = OpenDir(-1, "/dev", True);
@@ -73,7 +94,7 @@ static int findpty(char **slave)
}
}
CloseDir(dirp);
-#endif
+#endif /* defined(SVR4) || defined(SUNOS5) */
return (-1);
}
@@ -87,9 +108,9 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram)
#ifdef USE_SETRES
setresuid(0,0,0);
-#else
+#else /* USE_SETRES */
setuid(0);
-#endif
+#endif /* USE_SETRES */
/* Start new session - gets rid of controlling terminal. */
if (setsid() < 0) {
@@ -103,15 +124,15 @@ static int dochild(int master,char *slavedev, char *name, char *passwordprogram)
slavedev));
return(False);
}
-#ifdef SVR4
+#if defined(SVR4) || defined(SUNOS5)
ioctl(slave, I_PUSH, "ptem");
ioctl(slave, I_PUSH, "ldterm");
-#else
+#else /* defined(SVR4) || defined(SUNOS5) */
if (ioctl(slave,TIOCSCTTY,0) <0) {
DEBUG(3,("Error in ioctl call for slave pty\n"));
/* return(False); */
}
-#endif
+#endif /* defined(SVR4) || defined(SUNOS5) */
/* Close master. */
close(master);
diff --git a/source3/smbd/quotas.c b/source3/smbd/quotas.c
index e6a6f61568..262eea3100 100644
--- a/source3/smbd/quotas.c
+++ b/source3/smbd/quotas.c
@@ -367,7 +367,14 @@ DEBUG(5,("disk_quotas for path \"%s\" returning bsize %d, dfree %d, dsize %d\n"
#ifdef __FreeBSD__
#include <ufs/ufs/quota.h>
-#else
+#elif AIX
+/* AIX quota patch from Ole Holm Nielsen <ohnielse@fysik.dtu.dk> */
+#include <jfs/quota.h>
+/* AIX 4.X: Rename members of the dqblk structure (ohnielse@fysik.dtu.dk) */
+#define dqb_curfiles dqb_curinodes
+#define dqb_fhardlimit dqb_ihardlimit
+#define dqb_fsoftlimit dqb_isoftlimit
+#else /* !__FreeBSD__ && !AIX */
#include <sys/quota.h>
#include <devnm.h>
#endif
@@ -380,7 +387,7 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
uid_t euser_id;
int r;
struct dqblk D;
-#ifndef __FreeBSD__
+#if !defined(__FreeBSD__) && !defined(AIX)
char dev_disk[256];
struct stat S;
/* find the block device file */
@@ -401,13 +408,17 @@ BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize)
if (setresuid(user_id,-1,-1))
DEBUG(5,("Unable to reset uid to %d\n", user_id));
}
-#else
+#else /* USE_SETRES */
#if defined(__FreeBSD__)
r= quotactl(path,Q_GETQUOTA,euser_id,(char *) &D);
-#else
+#elif defined(AIX)
+ /* AIX has both USER and GROUP quotas:
+ Get the USER quota (ohnielse@fysik.dtu.dk) */
+ r= quotactl(path,QCMD(Q_GETQUOTA,USRQUOTA),euser_id,(char *) &D);
+#else /* !__FreeBSD__ && !AIX */
r=quotactl(Q_GETQUOTA, dev_disk, euser_id, &D);
-#endif
-#endif
+#endif /* !__FreeBSD__ && !AIX */
+#endif /* USE_SETRES */
/* Use softlimit to determine disk space, except when it has been exceeded */
*bsize = 1024;
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 0361c5aa46..768c7c71bc 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -224,7 +224,9 @@ int dos_mode(int cnum,char *path,struct stat *sbuf)
result |= aHIDDEN;
}
- if (is_hidden_path(SNUM(cnum), path))
+ /* Optimization : Only call is_hidden_path if it's not already
+ hidden. */
+ if (!(result & aHIDDEN) && is_hidden_path(SNUM(cnum), path))
{
result |= aHIDDEN;
}
@@ -4189,7 +4191,7 @@ static void usage(char *pname)
reopen_logs();
DEBUG(2,("%s smbd version %s started\n",timestring(),VERSION));
- DEBUG(2,("Copyright Andrew Tridgell 1992-1995\n"));
+ DEBUG(2,("Copyright Andrew Tridgell 1992-1997\n"));
#ifndef NO_GETRLIMIT
#ifdef RLIMIT_NOFILE