mirror of
https://github.com/samba-team/samba.git
synced 2025-08-04 08:22:08 +03:00
Rolling back the files
loadparm.c : to equivalent to version 1.67
reply.c : to equivalent to version 1.69
server.c : to equivalent to version 1.122
util.c : to equivalent to version 1.98
to remove the incorrect changes.
proto.h: The usual.
rpc_pipes/smbparse.c : Backeting stuff that SHOULD NOT BE IN THE
none-NTDOMAIN build !
Jeremy.
(This used to be commit 6064c9d80f
)
This commit is contained in:
@ -183,8 +183,6 @@ int interpret_coding_system(char *str, int def);
|
||||
|
||||
/*The following definitions come from loadparm.c */
|
||||
|
||||
char *chomp(char *s);
|
||||
char *read_string_external(char *fname);
|
||||
char *lp_string(char *s);
|
||||
char *lp_logfile(void);
|
||||
char *lp_smbrun(void);
|
||||
@ -331,7 +329,6 @@ BOOL lp_syncalways(int );
|
||||
BOOL lp_map_system(int );
|
||||
BOOL lp_delete_readonly(int );
|
||||
BOOL lp_fake_oplocks(int );
|
||||
BOOL lp_online(int );
|
||||
BOOL lp_recursive_veto_delete(int );
|
||||
BOOL lp_dos_filetimes(int );
|
||||
int lp_create_mode(int );
|
||||
@ -1275,4 +1272,3 @@ char *align_offset(char *q, char *base, int align_offset_len);
|
||||
void print_asc(int level, unsigned char *buf,int len);
|
||||
void dump_data(int level,char *buf1,int len);
|
||||
char *tab_depth(int depth);
|
||||
char *string_buffer(int sz);
|
||||
|
@ -4561,44 +4561,3 @@ char *tab_depth(int depth)
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
A convenience routine to grab string parameters into a rotating
|
||||
buffer. The buffers can be written to by callers without affecting
|
||||
the source string.
|
||||
********************************************************************/
|
||||
char *string_buffer(int sz)
|
||||
{
|
||||
static char *bufs[10];
|
||||
static int buflen[10];
|
||||
static int next = -1;
|
||||
char *ret;
|
||||
int i, len;
|
||||
|
||||
if (next == -1) {
|
||||
/* initialisation */
|
||||
for (i=0;i<10;i++) {
|
||||
bufs[i] = NULL;
|
||||
buflen[i] = 0;
|
||||
}
|
||||
next = 0;
|
||||
}
|
||||
|
||||
len = MAX(sz+100,sizeof(pstring)); /* the +100 is for some
|
||||
substitution room */
|
||||
|
||||
if (buflen[next] != len) {
|
||||
buflen[next] = len;
|
||||
if (bufs[next]) free(bufs[next]);
|
||||
bufs[next] = (char *)malloc(len);
|
||||
if (!bufs[next]) {
|
||||
DEBUG(0,("out of memory in lp_string_buffer()"));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
ret = &bufs[next][0];
|
||||
next = (next+1)%10;
|
||||
*ret = 0;
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
@ -278,7 +278,6 @@ typedef struct
|
||||
BOOL *copymap;
|
||||
BOOL bDeleteReadonly;
|
||||
BOOL bFakeOplocks;
|
||||
BOOL bOnline;
|
||||
BOOL bDeleteVetoFiles;
|
||||
BOOL bDosFiletimes;
|
||||
char dummy[3]; /* for alignment */
|
||||
@ -363,7 +362,6 @@ static service sDefault =
|
||||
NULL, /* copymap */
|
||||
False, /* bDeleteReadonly */
|
||||
False, /* bFakeOplocks */
|
||||
True, /* bOnline */
|
||||
False, /* bDeleteVetoFiles */
|
||||
False, /* bDosFiletimes */
|
||||
"" /* dummy */
|
||||
@ -596,7 +594,6 @@ struct parm_struct
|
||||
{"magic output", P_STRING, P_LOCAL, &sDefault.szMagicOutput, NULL},
|
||||
{"mangled map", P_STRING, P_LOCAL, &sDefault.szMangledMap, NULL},
|
||||
{"delete readonly", P_BOOL, P_LOCAL, &sDefault.bDeleteReadonly, NULL},
|
||||
{"online", P_BOOL, P_LOCAL, &sDefault.bOnline, NULL},
|
||||
{"dos filetimes", P_BOOL, P_LOCAL, &sDefault.bDosFiletimes, NULL},
|
||||
|
||||
{NULL, P_BOOL, P_NONE, NULL, NULL}
|
||||
@ -775,108 +772,57 @@ static void init_locals(void)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* chomp() strips off trailing linefeed- and carriage-return-characters */
|
||||
char *chomp(char *s)
|
||||
{
|
||||
if(!s || s == NULL)
|
||||
return(NULL);
|
||||
|
||||
while(strlen(s) > 0) {
|
||||
int i = strlen(s) - 1;
|
||||
|
||||
if(s [i] == '\n' || s [i] == '\r')
|
||||
s [i] = '\0';
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
return(s);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
read_string_external(fname): depending on the first character in fname either
|
||||
reads the first line of a file or of the output of a command. If the second
|
||||
character is a '$' execute standard-substitutions on the string to be returned.
|
||||
|
||||
examples: read_string_external("</etc/HOSTNAME"); returns the hostname
|
||||
read_string_external("|hostname"); returns the hostname too
|
||||
read_string_external("<$/usr/local/samba/lib/your_hostname");
|
||||
returns the client-hostname, if
|
||||
/.../your_hostname contains "%M"
|
||||
*/
|
||||
char *read_string_external(char *fname)
|
||||
{
|
||||
char *ret = NULL;
|
||||
pstring str;
|
||||
FILE *in = NULL;
|
||||
int mode = 0, do_subst = 0, offset = 1;
|
||||
|
||||
*str = '\0';
|
||||
|
||||
switch(*fname) {
|
||||
case '<': mode = 0; break;
|
||||
case '|': mode = 1; break;
|
||||
default: return(NULL); break;
|
||||
}
|
||||
|
||||
if(*(fname + 1) == '$') {
|
||||
do_subst = 1;
|
||||
offset = 2;
|
||||
}
|
||||
|
||||
switch(mode) {
|
||||
case 0: in = fopen(fname + offset, "r"); break;
|
||||
case 1: in = popen(fname + offset, "r"); break;
|
||||
}
|
||||
|
||||
if(in != NULL) {
|
||||
if(fgets(str, sizeof(str), in) == NULL)
|
||||
*str = '\0';
|
||||
else
|
||||
chomp(str);
|
||||
|
||||
switch(mode) {
|
||||
case 0: fclose(in); break;
|
||||
case 1: pclose(in); break;
|
||||
}
|
||||
}
|
||||
|
||||
if((ret = string_buffer(strlen(str))))
|
||||
{
|
||||
StrCpy(ret, str);
|
||||
|
||||
if(do_subst)
|
||||
{
|
||||
standard_sub_basic(ret);
|
||||
}
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************* a
|
||||
convenience routine to grab string parameters into a rotating buffer,
|
||||
and run standard_sub_basic on them. The buffers can be written to by
|
||||
callers without affecting the source string.
|
||||
********************************************************************/
|
||||
char *lp_string(char *s)
|
||||
{
|
||||
static char *bufs[10];
|
||||
static int buflen[10];
|
||||
static int next = -1;
|
||||
char *ret;
|
||||
int i;
|
||||
int len = s?strlen(s):0;
|
||||
char *ret = NULL;
|
||||
|
||||
if (next == -1) {
|
||||
/* initialisation */
|
||||
for (i=0;i<10;i++) {
|
||||
bufs[i] = NULL;
|
||||
buflen[i] = 0;
|
||||
}
|
||||
next = 0;
|
||||
}
|
||||
|
||||
len = MAX(len+100,sizeof(pstring)); /* the +100 is for some
|
||||
substitution room */
|
||||
|
||||
if (buflen[next] != len) {
|
||||
buflen[next] = len;
|
||||
if (bufs[next]) free(bufs[next]);
|
||||
bufs[next] = (char *)malloc(len);
|
||||
if (!bufs[next]) {
|
||||
DEBUG(0,("out of memory in lp_string()"));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
ret = &bufs[next][0];
|
||||
next = (next+1)%10;
|
||||
|
||||
if (!s)
|
||||
*ret = 0;
|
||||
else {
|
||||
ret = string_buffer(len);
|
||||
else
|
||||
StrCpy(ret,s);
|
||||
|
||||
trim_string(ret, "\"", "\"");
|
||||
|
||||
standard_sub_basic(ret);
|
||||
|
||||
if(*ret == '<' || *ret == '|')
|
||||
ret = read_string_external(ret);
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
In this section all the functions that are used to access the
|
||||
parameters from the rest of the program are defined
|
||||
@ -1051,7 +997,6 @@ FN_LOCAL_BOOL(lp_syncalways,bSyncAlways)
|
||||
FN_LOCAL_BOOL(lp_map_system,bMap_system)
|
||||
FN_LOCAL_BOOL(lp_delete_readonly,bDeleteReadonly)
|
||||
FN_LOCAL_BOOL(lp_fake_oplocks,bFakeOplocks)
|
||||
FN_LOCAL_BOOL(lp_online,bOnline)
|
||||
FN_LOCAL_BOOL(lp_recursive_veto_delete,bDeleteVetoFiles)
|
||||
FN_LOCAL_BOOL(lp_dos_filetimes,bDosFiletimes)
|
||||
|
||||
@ -2323,24 +2268,9 @@ int lp_servicenumber(char *pszServiceName)
|
||||
******************************************************************/
|
||||
char *volume_label(int snum)
|
||||
{
|
||||
static char lbl [13];
|
||||
char *ret = lp_volume(snum);
|
||||
int i = 0, j = 0;
|
||||
|
||||
if (!*ret)
|
||||
ret = lp_servicename(snum);
|
||||
|
||||
lbl [0] = '\0';
|
||||
|
||||
while(*(ret + i) && j < sizeof(lbl) - 1) {
|
||||
if(i == 8)
|
||||
lbl [j++] = '.';
|
||||
|
||||
lbl [j++] = *(ret + i++);
|
||||
lbl [j] = '\0';
|
||||
}
|
||||
|
||||
return(lbl);
|
||||
if (!*ret) return(lp_servicename(snum));
|
||||
return(ret);
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
@ -1023,9 +1023,7 @@ int reply_search(char *inbuf,char *outbuf)
|
||||
if ((dirtype&0x1F) == aVOLID)
|
||||
{
|
||||
memcpy(p,status,21);
|
||||
mode = aVOLID;
|
||||
if(!CAN_WRITE(cnum)) mode |= aRONLY;
|
||||
make_dir_struct(p,"???????????",volume_label(SNUM(cnum)),0,mode,0);
|
||||
make_dir_struct(p,"???????????",volume_label(SNUM(cnum)),0,aVOLID,0);
|
||||
dptr_fill(p+12,dptr_num);
|
||||
if (dptr_zero(p+12) && (status_len==0))
|
||||
numentries = 1;
|
||||
|
@ -4356,7 +4356,6 @@ force write permissions on print services.
|
||||
#define TIME_INIT (1<<2)
|
||||
#define CAN_IPC (1<<3)
|
||||
#define AS_GUEST (1<<5)
|
||||
#define DONT_CHECK_ONLINE (1<<6)
|
||||
|
||||
|
||||
/*
|
||||
@ -4378,15 +4377,15 @@ struct smb_message_struct
|
||||
|
||||
/* CORE PROTOCOL */
|
||||
|
||||
{SMBnegprot,"SMBnegprot",reply_negprot,DONT_CHECK_ONLINE},
|
||||
{SMBtcon,"SMBtcon",reply_tcon,DONT_CHECK_ONLINE},
|
||||
{SMBtdis,"SMBtdis",reply_tdis,DONT_CHECK_ONLINE},
|
||||
{SMBexit,"SMBexit",reply_exit,DONT_CHECK_ONLINE},
|
||||
{SMBioctl,"SMBioctl",reply_ioctl,DONT_CHECK_ONLINE},
|
||||
{SMBecho,"SMBecho",reply_echo,DONT_CHECK_ONLINE},
|
||||
{SMBsesssetupX,"SMBsesssetupX",reply_sesssetup_and_X,DONT_CHECK_ONLINE},
|
||||
{SMBtconX,"SMBtconX",reply_tcon_and_X,DONT_CHECK_ONLINE},
|
||||
{SMBulogoffX, "SMBulogoffX", reply_ulogoffX, DONT_CHECK_ONLINE}, /* ulogoff doesn't give a valid TID */
|
||||
{SMBnegprot,"SMBnegprot",reply_negprot,0},
|
||||
{SMBtcon,"SMBtcon",reply_tcon,0},
|
||||
{SMBtdis,"SMBtdis",reply_tdis,0},
|
||||
{SMBexit,"SMBexit",reply_exit,0},
|
||||
{SMBioctl,"SMBioctl",reply_ioctl,0},
|
||||
{SMBecho,"SMBecho",reply_echo,0},
|
||||
{SMBsesssetupX,"SMBsesssetupX",reply_sesssetup_and_X,0},
|
||||
{SMBtconX,"SMBtconX",reply_tcon_and_X,0},
|
||||
{SMBulogoffX, "SMBulogoffX", reply_ulogoffX, 0}, /* ulogoff doesn't give a valid TID */
|
||||
{SMBgetatr,"SMBgetatr",reply_getatr,AS_USER},
|
||||
{SMBsetatr,"SMBsetatr",reply_setatr,AS_USER | NEED_WRITE},
|
||||
{SMBchkpth,"SMBchkpth",reply_chkpth,AS_USER},
|
||||
@ -4576,10 +4575,6 @@ static int switch_message(int type,char *inbuf,char *outbuf,int size,int bufsize
|
||||
if ((flags & AS_GUEST) && (!become_guest() || !check_access(-1)))
|
||||
return(ERROR(ERRSRV,ERRaccess));
|
||||
|
||||
/* is this service online? */
|
||||
if (! (flags & DONT_CHECK_ONLINE) && ! lp_online(SNUM(cnum)))
|
||||
return(ERROR(ERRHRD,ERRnotready));
|
||||
|
||||
last_inbuf = inbuf;
|
||||
|
||||
outsize = smb_messages[match].fn(inbuf,outbuf,size,bufsize);
|
||||
|
Reference in New Issue
Block a user