Author: vlendec Date: 2006-06-16 21:55:47 +0000 (Fri, 16 Jun 2006) New Revision: 16303
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16303 Log: Remove sub_snum. Same argument as sub_conn. With this, none of the substitute routines themselves reference current_user[_info] anymore. Volker Modified: trunk/source/lib/substitute.c trunk/source/printing/print_generic.c trunk/source/printing/printing.c Changeset: Modified: trunk/source/lib/substitute.c =================================================================== --- trunk/source/lib/substitute.c 2006-06-16 21:23:13 UTC (rev 16302) +++ trunk/source/lib/substitute.c 2006-06-16 21:55:47 UTC (rev 16303) @@ -745,30 +745,3 @@ SAFE_FREE( s ); } } - -/**************************************************************************** - Like standard_sub but by snum. -****************************************************************************/ - -void standard_sub_snum(int snum, char *str, size_t len) -{ - static uid_t cached_uid = -1; - static fstring cached_user; - char *s; - - /* calling uidtoname() on every substitute would be too expensive, so - we cache the result here as nearly every call is for the same uid */ - - if (cached_uid != current_user.ut.uid) { - fstrcpy(cached_user, uidtoname(current_user.ut.uid)); - cached_uid = current_user.ut.uid; - } - - s = alloc_sub_advanced(snum, cached_user, "", current_user.ut.gid, - smb_user_name, current_user_info.domain, str); - - if ( s ) { - strncpy( str, s, len ); - SAFE_FREE( s ); - } -} Modified: trunk/source/printing/print_generic.c =================================================================== --- trunk/source/printing/print_generic.c 2006-06-16 21:23:13 UTC (rev 16302) +++ trunk/source/printing/print_generic.c 2006-06-16 21:55:47 UTC (rev 16303) @@ -30,7 +30,9 @@ static int print_run_command(int snum, const char* printername, BOOL do_sub, const char *command, int *outfd, ...) { - + extern struct current_user current_user; + extern userdom_struct current_user_info; + pstring syscmd; char *arg; int ret; @@ -56,7 +58,11 @@ pstring_sub( syscmd, "%p", printername ); if ( do_sub && snum != -1 ) - standard_sub_snum(snum,syscmd,sizeof(syscmd)); + standard_sub_advanced(snum, current_user_info.unix_name, "", + current_user.ut.gid, + get_current_username(), + current_user_info.domain, + syscmd, sizeof(syscmd)); ret = smbrun(syscmd,outfd); Modified: trunk/source/printing/printing.c =================================================================== --- trunk/source/printing/printing.c 2006-06-16 21:23:13 UTC (rev 16302) +++ trunk/source/printing/printing.c 2006-06-16 21:55:47 UTC (rev 16303) @@ -1439,6 +1439,8 @@ static void print_queue_update(int snum, BOOL force) { + extern struct current_user current_user; + extern userdom_struct current_user_info; fstring key; fstring sharename; pstring lpqcommand, lprmcommand; @@ -1456,12 +1458,20 @@ pstrcpy( lpqcommand, lp_lpqcommand(snum)); string_sub2( lpqcommand, "%p", PRINTERNAME(snum), sizeof(lpqcommand), False, False, False ); - standard_sub_snum( snum, lpqcommand, sizeof(lpqcommand) ); + standard_sub_advanced(snum, current_user_info.unix_name, "", + current_user.ut.gid, + get_current_username(), + current_user_info.domain, + lpqcommand, sizeof(lpqcommand) ); pstrcpy( lprmcommand, lp_lprmcommand(snum)); string_sub2( lprmcommand, "%p", PRINTERNAME(snum), sizeof(lprmcommand), False, False, False ); - standard_sub_snum( snum, lprmcommand, sizeof(lprmcommand) ); + standard_sub_advanced(snum, current_user_info.unix_name, "", + current_user.ut.gid, + get_current_username(), + current_user_info.domain, + lprmcommand, sizeof(lprmcommand) ); /* * Make sure that the background queue process exists.