1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

show locked files for -u <user>; bug 590

(This used to be commit d72d77c427)
This commit is contained in:
Gerald Carter 2003-11-12 22:35:50 +00:00
parent 19aff105aa
commit c3c1e248ad

View File

@ -35,10 +35,12 @@
#include "includes.h" #include "includes.h"
static pstring Ucrit_username = ""; /* added by OH */ #define SMB_MAXPIDS 2048
static pid_t Ucrit_pid[100]; /* Ugly !!! */ /* added by OH */ static pstring Ucrit_username = ""; /* added by OH */
static int Ucrit_MaxPid=0; /* added by OH */ static pid_t Ucrit_pid[SMB_MAXPIDS]; /* Ugly !!! */ /* added by OH */
static unsigned int Ucrit_IsActive = 0; /* added by OH */ static int Ucrit_MaxPid=0; /* added by OH */
static unsigned int Ucrit_IsActive = 0; /* added by OH */
static int verbose, brief; static int verbose, brief;
static int shares_only = 0; /* Added by RJS */ static int shares_only = 0; /* Added by RJS */
static int locks_only = 0; /* Added by RJS */ static int locks_only = 0; /* Added by RJS */
@ -49,26 +51,53 @@ static int show_brl;
static void Ucrit_addUsername(const char *username) static void Ucrit_addUsername(const char *username)
{ {
pstrcpy(Ucrit_username, username); pstrcpy(Ucrit_username, username);
if(strlen(Ucrit_username) > 0)
if ( strlen(Ucrit_username) > 0 )
Ucrit_IsActive = 1; Ucrit_IsActive = 1;
} }
static unsigned int Ucrit_checkUsername(const char *username) static unsigned int Ucrit_checkUsername(const char *username)
{ {
if ( !Ucrit_IsActive) return 1; if ( !Ucrit_IsActive )
if (strcmp(Ucrit_username,username) ==0) return 1; return 1;
if ( strcmp(Ucrit_username,username) == 0 )
return 1;
return 0; return 0;
} }
static unsigned int Ucrit_checkPid(pid_t pid) static unsigned int Ucrit_checkPid(pid_t pid)
{ {
int i; int i;
if ( !Ucrit_IsActive) return 1;
for (i=0;i<Ucrit_MaxPid;i++) if ( !Ucrit_IsActive )
if( pid == Ucrit_pid[i] ) return 1; return 1;
for (i=0;i<Ucrit_MaxPid;i++) {
if( pid == Ucrit_pid[i] )
return 1;
}
return 0; return 0;
} }
static BOOL Ucrit_addPid( pid_t pid )
{
if ( !Ucrit_IsActive )
return True;
if ( Ucrit_MaxPid >= SMB_MAXPIDS ) {
d_printf("ERROR: More than %d pids for user %s!\n",
SMB_MAXPIDS, Ucrit_username);
return False;
}
Ucrit_pid[Ucrit_MaxPid++] = pid;
return True;
}
static void print_share_mode(share_mode_entry *e, char *fname) static void print_share_mode(share_mode_entry *e, char *fname)
{ {
@ -526,6 +555,8 @@ static int traverse_sessionid(TDB_CONTEXT *tdb, TDB_DATA kbuf, TDB_DATA dbuf, vo
return 0; return 0;
} }
Ucrit_addPid( sessionid.pid );
d_printf("%5d %-12s %-12s %-12s (%s)\n", d_printf("%5d %-12s %-12s %-12s (%s)\n",
(int)sessionid.pid, uidtoname(sessionid.uid), gidtoname(sessionid.gid), (int)sessionid.pid, uidtoname(sessionid.uid), gidtoname(sessionid.gid),
sessionid.remote_machine, sessionid.hostname); sessionid.remote_machine, sessionid.hostname);