Ignore:
Timestamp:
Sep 27, 2013, 1:57:24 PM (12 years ago)
Author:
Silvan Scherrer
Message:

Samba Client 2.1: timestamp work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/client/src/smbwrp.c

    r808 r818  
    3939static int
    4040net_share_enum_rpc(struct cli_state *cli,
    41                    void (*fn)(const char *name,
    42                               uint32 type,
    43                               const char *comment,
    44                               void *state),
    45                    void *state)
     41                void (*fn)(const char *name,
     42                uint32 type,
     43                const char *comment,
     44                void *state),
     45                void *state)
    4646{
    4747        int i;
     
    7878        info_ctr.ctr.ctr1 = &ctr1;
    7979        status = rpccli_srvsvc_NetShareEnumAll(pipe_hnd, mem_ctx,
    80                                               pipe_hnd->desthost,
    81                                               &info_ctr,
    82                                               0xffffffff,
    83                                               &total_entries,
    84                                               &resume_handle,
    85                                               &werr);
     80                                                pipe_hnd->desthost,
     81                                                &info_ctr,
     82                                                0xffffffff,
     83                                                &total_entries,
     84                                                &resume_handle,
     85                                                &werr);
    8686
    8787        /* Was it successful? */
     
    128128        char slogfilename[] = "log.smbc";
    129129        char *env = getenv("LOGFILES");
    130                 if (env != NULL)
    131                 {
    132                    strncpy(slogfile, env, sizeof(slogfile) -1);
    133                    strncat(slogfile, "\\", sizeof(slogfile) - strlen(slogfile) -1);
    134                    strncat(slogfile, slogfilename, sizeof(slogfile) - strlen(slogfile) -1);
    135                 }
    136                 else
    137                 {
    138                    strncpy(slogfile, slogfilename, sizeof(slogfile) -1);
    139                 }
    140 
    141                 // init samba for debug messages
    142                 setup_logging(slogfile, false);
    143                 lp_set_logfile(slogfile);
    144                 debug_parse_levels("10");
     130        if (env != NULL)
     131        {
     132                strncpy(slogfile, env, sizeof(slogfile) -1);
     133                strncat(slogfile, "\\", sizeof(slogfile) - strlen(slogfile) -1);
     134                strncat(slogfile, slogfilename, sizeof(slogfile) - strlen(slogfile) -1);
     135        }
     136        else
     137        {
     138                strncpy(slogfile, slogfilename, sizeof(slogfile) -1);
     139        }
     140
     141        // init samba for debug messages
     142        setup_logging(slogfile, false);
     143        lp_set_logfile(slogfile);
     144        debug_parse_levels("10");
    145145
    146146}
     
    201201{
    202202        /*
    203          * Block SIGPIPE (from lib/util_sock.c: write())
    204          * It is not needed and should not stop execution
    205          */
     203        Block SIGPIPE (from lib/util_sock.c: write())
     204        It is not needed and should not stop execution
     205        */
    206206        BlockSignals(True, SIGPIPE);
    207207}
     
    316316        char *rparam=NULL, *rdata=NULL;
    317317        char *p;
    318        
     318
    319319        param = SMB_MALLOC_ARRAY(char, 6+nlen+2);
    320320        if (!param) {
     
    331331
    332332        if (!cli_send_trans(cli, SMBtrans2,
    333                             NULL,                        /* name */
    334                             -1, 0,                      /* fid, flags */
    335                             &setup, 1, 0,                /* setup, length, max */
    336                             param, param_len, 10,        /* param, length, max */
    337                             NULL, data_len, cli->max_xmit /* data, length, max */
    338                            )) {
     333                        NULL,                           /* name */
     334                        -1, 0,                          /* fid, flags */
     335                        &setup, 1, 0,                   /* setup, length, max */
     336                        param, param_len, 10,           /* param, length, max */
     337                        NULL, data_len, cli->max_xmit   /* data, length, max */
     338                        )) {
    339339                return False;
    340340        }
     
    342342        SAFE_FREE(param);
    343343        if (!cli_receive_trans(cli, SMBtrans2,
    344                                &rparam, &param_len,
    345                                &rdata, &data_len)) {
     344                        &rparam, &param_len,
     345                        &rdata, &data_len)) {
    346346                return False;
    347347        }
     
    402402
    403403        if (!cli_send_trans(cli, SMBtrans2,
    404                             NULL,                          /* name */
    405                             -1, 0,                        /* fid, flags */
    406                             &setup, 1, 0,                  /* setup, length, max */
    407                             param, param_len, 2,            /* param, length, max */
    408                             NULL, data_len, cli->max_xmit   /* data, length, max */
    409                            )) {
     404                        NULL,                           /* name */
     405                        -1, 0,                          /* fid, flags */
     406                        &setup, 1, 0,                   /* setup, length, max */
     407                        param, param_len, 2,            /* param, length, max */
     408                        NULL, data_len, cli->max_xmit   /* data, length, max */
     409                        )) {
    410410                return False;
    411411        }
    412412
    413413        if (!cli_receive_trans(cli, SMBtrans2,
    414                                &rparam, &param_len,
    415                                &rdata, &data_len)) {
     414                        &rparam, &param_len,
     415                        &rdata, &data_len)) {
    416416                return False;
    417417        }
     
    635635        }
    636636        file->fd = fd;
    637         file->newmtime = 0;
     637        file->updatetime = 0;
    638638        file->offset = 0;
    639639        return 0;
     
    686686        }
    687687
    688         file->newmtime = 1;
     688        file->updatetime = 1;
    689689        file->offset += ret;
    690690        *result = ret;
     
    703703        }
    704704
     705        debuglocal(4,"smpwrp_close updatetime: %d\n", file->updatetime);
     706
     707        if (file->updatetime == 1)
     708        {
     709                file->mtime = time(NULL);
     710                debuglocal(4,"cli_close new mtime %lu\n", file->mtime);
     711        }
    705712       
    706713        if (!NT_STATUS_IS_OK(cli_close(cli, file->fd)))
    707714        {
    708                 return os2cli_errno(cli);
    709         }
    710         if (file->newmtime)
    711         {
    712                 file->newmtime = 0;
    713                 file->mtime = time(NULL);
    714                 debuglocal(4,"cli_close new mtime %lu\n", file->mtime);
    715         }
     715                rc = os2cli_errno(cli);
     716        }
     717
     718        if (!rc && (file->openattr || file->mtime || file->ctime))
     719        {
     720                debuglocal(4,"Set pathinfo on close %s %08x %d %d\n", file->fname, file->openattr, file->mtime, file->ctime);
     721                if (!NT_STATUS_IS_OK(cli_setpathinfo(cli, file->fname, file->ctime, 0, file->mtime, 0, file->openattr)))
     722                {
     723                        debuglocal(4,"Set pathinfo on close failed %d\n", os2cli_errno(cli));
     724                        //rc = os2cli_errno(cli);
     725                }
     726        }
     727
     728        file->openattr = 0;
     729        file->mtime = 0;
     730        file->ctime = 0;
     731        file->updatetime = 0;
    716732        file->fd = -1;
    717733        file->offset = 0;
    718         if (file->openattr || file->mtime)
    719         {
    720                 debuglocal(4,"Set attr on close %s %08x %d %d\n", file->fname, file->openattr, file->mtime, file->mtime);
    721                 if (!NT_STATUS_IS_OK(cli_setatr(cli, file->fname, file->openattr, file->mtime)))
    722                 {
    723                         debuglocal(4,"Set attr on close failed %d\n", os2cli_errno(cli));
    724                         //rc = os2cli_errno(cli);
    725                 }
    726                
    727                 file->openattr = 0;
    728                 file->mtime = 0;
    729         }
    730734        *file->fname = 0;
    731735        return rc;
Note: See TracChangeset for help on using the changeset viewer.