Ignore:
Timestamp:
Nov 27, 2012, 4:43:17 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.0

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/source3/libsmb/cliprint.c

    r628 r745  
    1919
    2020#include "includes.h"
     21#include "libsmb/libsmb.h"
     22#include "libsmb/clirap.h"
    2123
    2224/*****************************************************************************
     
    2830                          char *rdata, int rdrcnt)
    2931{
     32        unsigned int offset;
     33
    3034        if (datap == 0) {
    3135                /* turn NULL pointers into zero length strings */
    3236                return "";
    33         } else {
    34                 unsigned int offset = datap - converter;
    35 
    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                 }
    43         }
     37        }
     38
     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>";
     45        }
     46        return &rdata[offset];
    4447}
    4548
     
    98101                                        fix_char_ptr(SVAL(p,4), converter,
    99102                                                     rdata, rdrcnt));
    100                                 job.t = cli_make_unix_date3(cli, p + 12);
     103                                job.t = make_unix_date3(
     104                                        p + 12, cli->serverzone);
    101105                                job.size = IVAL(p,16);
    102106                                fstrcpy(job.name,fix_char_ptr(SVAL(p,24),
     
    152156        p = skip_string(param,sizeof(param),p);
    153157
    154         DEBUG(4,("doing cli_print_queue for %s\n", cli->share));
     158        DEBUG(4,("doing cli_print_queue_state for %s\n", cli->share));
    155159
    156160        if (cli_api(cli,
     
    174178                                        fix_char_ptr(SVAL(p,4), converter,
    175179                                                     rdata, rdrcnt));
    176                                 job.t = cli_make_unix_date3(cli, p + 12);
     180                                job.t = make_unix_date3(
     181                                        p + 12, cli->serverzone);
    177182                                job.size = IVAL(p,16);
    178183                                fstrcpy(job.name,fix_char_ptr(SVAL(p,24),
     
    192197}
    193198#endif
    194 
    195199/****************************************************************************
    196200  cancel a print job
     
    231235        return ret;
    232236}
    233 
    234 
    235 /****************************************************************************
    236  Open a spool file
    237 ****************************************************************************/
    238 
    239 int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int share_mode)
    240 {
    241         char *p;
    242         unsigned openfn=0;
    243         unsigned accessmode=0;
    244 
    245         if (flags & O_CREAT)
    246                 openfn |= (1<<4);
    247         if (!(flags & O_EXCL)) {
    248                 if (flags & O_TRUNC)
    249                         openfn |= (1<<1);
    250                 else
    251                         openfn |= (1<<0);
    252         }
    253 
    254         accessmode = (share_mode<<4);
    255 
    256         if ((flags & O_ACCMODE) == O_RDWR) {
    257                 accessmode |= 2;
    258         } else if ((flags & O_ACCMODE) == O_WRONLY) {
    259                 accessmode |= 1;
    260         }
    261 
    262 #if defined(O_SYNC)
    263         if ((flags & O_SYNC) == O_SYNC) {
    264                 accessmode |= (1<<14);
    265         }
    266 #endif /* O_SYNC */
    267 
    268         if (share_mode == DENY_FCB) {
    269                 accessmode = 0xFF;
    270         }
    271 
    272         memset(cli->outbuf,'\0',smb_size);
    273         memset(cli->inbuf,'\0',smb_size);
    274 
    275         cli_set_message(cli->outbuf,15,0,True);
    276 
    277         SCVAL(cli->outbuf,smb_com,SMBsplopen);
    278         SSVAL(cli->outbuf,smb_tid,cli->cnum);
    279         cli_setup_packet(cli);
    280 
    281         SSVAL(cli->outbuf,smb_vwv0,0xFF);
    282         SSVAL(cli->outbuf,smb_vwv2,0);  /* no additional info */
    283         SSVAL(cli->outbuf,smb_vwv3,accessmode);
    284         SSVAL(cli->outbuf,smb_vwv4,aSYSTEM | aHIDDEN);
    285         SSVAL(cli->outbuf,smb_vwv5,0);
    286         SSVAL(cli->outbuf,smb_vwv8,openfn);
    287 
    288         if (cli->use_oplocks) {
    289                 /* if using oplocks then ask for a batch oplock via
    290                    core and extended methods */
    291                 SCVAL(cli->outbuf,smb_flg, CVAL(cli->outbuf,smb_flg)|
    292                         FLAG_REQUEST_OPLOCK|FLAG_REQUEST_BATCH_OPLOCK);
    293                 SSVAL(cli->outbuf,smb_vwv2,SVAL(cli->outbuf,smb_vwv2) | 6);
    294         }
    295 
    296         p = smb_buf(cli->outbuf);
    297         p += clistr_push(cli, p, fname, -1, STR_TERMINATE);
    298 
    299         cli_setup_bcc(cli, p);
    300 
    301         cli_send_smb(cli);
    302         if (!cli_receive_smb(cli)) {
    303                 return -1;
    304         }
    305 
    306         if (cli_is_error(cli)) {
    307                 return -1;
    308         }
    309 
    310         return SVAL(cli->inbuf,smb_vwv2);
    311 }
    312 
    313 /****************************************************************************
    314  Close a file.
    315 ****************************************************************************/
    316 
    317 bool cli_spl_close(struct cli_state *cli, uint16_t fnum)
    318 {
    319         memset(cli->outbuf,'\0',smb_size);
    320         memset(cli->inbuf,'\0',smb_size);
    321 
    322         cli_set_message(cli->outbuf,3,0,True);
    323 
    324         SCVAL(cli->outbuf,smb_com,SMBsplclose);
    325         SSVAL(cli->outbuf,smb_tid,cli->cnum);
    326         cli_setup_packet(cli);
    327 
    328         SSVAL(cli->outbuf,smb_vwv0,fnum);
    329         SIVALS(cli->outbuf,smb_vwv1,-1);
    330 
    331         cli_send_smb(cli);
    332         if (!cli_receive_smb(cli)) {
    333                 return False;
    334         }
    335 
    336         return !cli_is_error(cli);
    337 }
Note: See TracChangeset for help on using the changeset viewer.