2005-03-31 20:26:15 +04:00
# include <stdio.h>
# include <unistd.h>
# include <string.h>
# include <time.h>
# include <libsmbclient.h>
# include "get_auth_data_fn.h"
int main ( int argc , char * argv [ ] )
{
int ret ;
int debug = 0 ;
char buffer [ 16384 ] ;
char mtime [ 32 ] ;
char ctime [ 32 ] ;
char atime [ 32 ] ;
char * pSmbPath = NULL ;
2005-06-01 00:12:34 +04:00
time_t t = time ( NULL ) ;
2005-04-27 18:05:02 +04:00
struct tm tm ;
2005-03-31 20:26:15 +04:00
struct stat st ;
struct utimbuf utimbuf ;
if ( argc = = 1 )
{
pSmbPath = " smb://RANDOM/Public/small " ;
}
else if ( argc = = 2 )
{
pSmbPath = argv [ 1 ] ;
}
else if ( argc = = 3 )
{
pSmbPath = argv [ 1 ] ;
2005-06-01 00:12:34 +04:00
t = ( time_t ) strtol ( argv [ 2 ] , NULL , 10 ) ;
2005-03-31 20:26:15 +04:00
}
else
{
printf ( " usage: "
2005-06-01 00:12:34 +04:00
" %s [ smb://path/to/file [ mtime ] ] \n " ,
2005-03-31 20:26:15 +04:00
argv [ 0 ] ) ;
return 1 ;
}
smbc_init ( get_auth_data_fn , debug ) ;
if ( smbc_stat ( pSmbPath , & st ) < 0 )
{
perror ( " smbc_stat " ) ;
return 1 ;
}
printf ( " Before \n mtime:%lu/%s ctime:%lu/%s atime:%lu/%s \n " ,
st . st_mtime , ctime_r ( & st . st_mtime , mtime ) ,
st . st_ctime , ctime_r ( & st . st_ctime , ctime ) ,
st . st_atime , ctime_r ( & st . st_atime , atime ) ) ;
2005-06-01 00:12:34 +04:00
utimbuf . actime = t ; /* unchangable (wont change) */
utimbuf . modtime = t ; /* this one should succeed */
2005-03-31 20:26:15 +04:00
if ( smbc_utime ( pSmbPath , & utimbuf ) < 0 )
{
perror ( " smbc_utime " ) ;
return 1 ;
}
if ( smbc_stat ( pSmbPath , & st ) < 0 )
{
perror ( " smbc_stat " ) ;
return 1 ;
}
printf ( " After \n mtime:%lu/%s ctime:%lu/%s atime:%lu/%s \n " ,
st . st_mtime , ctime_r ( & st . st_mtime , mtime ) ,
st . st_ctime , ctime_r ( & st . st_ctime , ctime ) ,
st . st_atime , ctime_r ( & st . st_atime , atime ) ) ;
return 0 ;
}