Changeset 740 for vendor/current/source3/libsmb/cliprint.c
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source3/libsmb/cliprint.c
r414 r740 19 19 20 20 #include "includes.h" 21 #include "libsmb/libsmb.h" 22 #include "libsmb/clirap.h" 21 23 22 24 /***************************************************************************** … … 28 30 char *rdata, int rdrcnt) 29 31 { 32 unsigned int offset; 33 30 34 if (datap == 0) { 31 35 /* turn NULL pointers into zero length strings */ 32 36 return ""; 33 } else { 34 unsigned int offset = datap - converter; 37 } 35 38 36 if (offset >= rdrcnt) { 37 DEBUG(1,("bad char ptr: datap=%u, converter=%u rdrcnt=%d>", 38 datap, converter, rdrcnt)); 39 return "<ERROR>"; 40 } else { 41 return &rdata[offset]; 42 } 39 offset = datap - converter; 40 41 if (offset >= rdrcnt) { 42 DEBUG(1,("bad char ptr: datap=%u, converter=%u rdrcnt=%d>", 43 datap, converter, rdrcnt)); 44 return "<ERROR>"; 43 45 } 46 return &rdata[offset]; 44 47 } 45 48 … … 98 101 fix_char_ptr(SVAL(p,4), converter, 99 102 rdata, rdrcnt)); 100 job.t = cli_make_unix_date3(cli, p + 12); 103 job.t = make_unix_date3( 104 p + 12, cli->serverzone); 101 105 job.size = IVAL(p,16); 102 106 fstrcpy(job.name,fix_char_ptr(SVAL(p,24), … … 154 158 return ret; 155 159 } 156 157 158 /****************************************************************************159 Open a spool file160 ****************************************************************************/161 162 int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int share_mode)163 {164 char *p;165 unsigned openfn=0;166 unsigned accessmode=0;167 168 if (flags & O_CREAT)169 openfn |= (1<<4);170 if (!(flags & O_EXCL)) {171 if (flags & O_TRUNC)172 openfn |= (1<<1);173 else174 openfn |= (1<<0);175 }176 177 accessmode = (share_mode<<4);178 179 if ((flags & O_ACCMODE) == O_RDWR) {180 accessmode |= 2;181 } else if ((flags & O_ACCMODE) == O_WRONLY) {182 accessmode |= 1;183 }184 185 #if defined(O_SYNC)186 if ((flags & O_SYNC) == O_SYNC) {187 accessmode |= (1<<14);188 }189 #endif /* O_SYNC */190 191 if (share_mode == DENY_FCB) {192 accessmode = 0xFF;193 }194 195 memset(cli->outbuf,'\0',smb_size);196 memset(cli->inbuf,'\0',smb_size);197 198 cli_set_message(cli->outbuf,15,0,True);199 200 SCVAL(cli->outbuf,smb_com,SMBsplopen);201 SSVAL(cli->outbuf,smb_tid,cli->cnum);202 cli_setup_packet(cli);203 204 SSVAL(cli->outbuf,smb_vwv0,0xFF);205 SSVAL(cli->outbuf,smb_vwv2,0); /* no additional info */206 SSVAL(cli->outbuf,smb_vwv3,accessmode);207 SSVAL(cli->outbuf,smb_vwv4,aSYSTEM | aHIDDEN);208 SSVAL(cli->outbuf,smb_vwv5,0);209 SSVAL(cli->outbuf,smb_vwv8,openfn);210 211 if (cli->use_oplocks) {212 /* if using oplocks then ask for a batch oplock via213 core and extended methods */214 SCVAL(cli->outbuf,smb_flg, CVAL(cli->outbuf,smb_flg)|215 FLAG_REQUEST_OPLOCK|FLAG_REQUEST_BATCH_OPLOCK);216 SSVAL(cli->outbuf,smb_vwv2,SVAL(cli->outbuf,smb_vwv2) | 6);217 }218 219 p = smb_buf(cli->outbuf);220 p += clistr_push(cli, p, fname, -1, STR_TERMINATE);221 222 cli_setup_bcc(cli, p);223 224 cli_send_smb(cli);225 if (!cli_receive_smb(cli)) {226 return -1;227 }228 229 if (cli_is_error(cli)) {230 return -1;231 }232 233 return SVAL(cli->inbuf,smb_vwv2);234 }235 236 /****************************************************************************237 Close a file.238 ****************************************************************************/239 240 bool cli_spl_close(struct cli_state *cli, uint16_t fnum)241 {242 memset(cli->outbuf,'\0',smb_size);243 memset(cli->inbuf,'\0',smb_size);244 245 cli_set_message(cli->outbuf,3,0,True);246 247 SCVAL(cli->outbuf,smb_com,SMBsplclose);248 SSVAL(cli->outbuf,smb_tid,cli->cnum);249 cli_setup_packet(cli);250 251 SSVAL(cli->outbuf,smb_vwv0,fnum);252 SIVALS(cli->outbuf,smb_vwv1,-1);253 254 cli_send_smb(cli);255 if (!cli_receive_smb(cli)) {256 return False;257 }258 259 return !cli_is_error(cli);260 }
Note:
See TracChangeset
for help on using the changeset viewer.