2022-08-17 11:51:06 +03:00
# include <stdio.h>
2008-02-27 05:46:08 +03:00
# include <unistd.h>
2022-08-17 11:51:06 +03:00
# include <string.h>
# include <time.h>
2008-02-27 05:46:08 +03:00
# include <errno.h>
2022-08-17 11:51:06 +03:00
# include <libsmbclient.h>
2008-02-27 05:46:08 +03:00
# include "get_auth_data_fn.h"
2022-08-17 11:51:06 +03:00
int main ( int argc , char * argv [ ] )
{
int fd ;
int ret ;
int debug = 0 ;
int savedErrno ;
char buffer [ 128 ] ;
struct stat st ;
2008-02-27 05:46:08 +03:00
2022-08-17 11:51:06 +03:00
if ( argc ! = 2 )
{
printf ( " usage: "
" %s smb://path/to/file \n " ,
argv [ 0 ] ) ;
return 1 ;
}
2008-02-27 05:46:08 +03:00
2022-08-17 11:51:06 +03:00
smbc_init ( get_auth_data_fn , debug ) ;
2008-02-27 05:46:08 +03:00
2022-08-17 11:51:06 +03:00
if ( ( fd = smbc_open ( argv [ 1 ] , O_WRONLY | O_CREAT | O_TRUNC , 0 ) ) < 0 )
{
perror ( " smbc_open " ) ;
return 1 ;
}
2008-02-27 05:46:08 +03:00
2022-08-17 11:51:06 +03:00
snprintf ( buffer , sizeof ( buffer ) , " %s " , " Hello world. \n This is a test. \n " ) ;
2008-02-27 05:46:08 +03:00
2022-08-17 11:51:06 +03:00
ret = smbc_write ( fd , buffer , strlen ( buffer ) ) ;
savedErrno = errno ;
smbc_close ( fd ) ;
2008-02-27 05:46:08 +03:00
2022-08-17 11:51:06 +03:00
if ( ret < 0 )
{
errno = savedErrno ;
perror ( " write " ) ;
}
if ( smbc_stat ( argv [ 1 ] , & st ) < 0 )
{
perror ( " smbc_stat " ) ;
return 1 ;
}
printf ( " Original size: %lu \n " , ( unsigned long ) st . st_size ) ;
if ( ( fd = smbc_open ( argv [ 1 ] , O_WRONLY , 0 ) ) < 0 )
{
perror ( " smbc_open " ) ;
return 1 ;
}
ret = smbc_ftruncate ( fd , 13 ) ;
savedErrno = errno ;
smbc_close ( fd ) ;
if ( ret < 0 )
{
errno = savedErrno ;
perror ( " smbc_ftruncate " ) ;
return 1 ;
}
if ( smbc_stat ( argv [ 1 ] , & st ) < 0 )
{
perror ( " smbc_stat " ) ;
return 1 ;
}
printf ( " New size: %lu \n " , ( unsigned long ) st . st_size ) ;
return 0 ;
2008-02-27 05:46:08 +03:00
}