mirror of
https://github.com/samba-team/samba.git
synced 2025-01-25 06:04:04 +03:00
r6120: Added "volume" command to smbclient that prints out the volume name and
serial number. Jeremy. (This used to be commit c69623072e4112a4719867ea4809f5145b3cb64c)
This commit is contained in:
parent
acd9ef30f3
commit
3fb8308072
@ -2235,6 +2235,25 @@ static int cmd_rename(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
Print the volume name.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static int cmd_volume(void)
|
||||||
|
{
|
||||||
|
fstring volname;
|
||||||
|
uint32 serial_num;
|
||||||
|
time_t create_date;
|
||||||
|
|
||||||
|
if (!cli_get_fs_volume_info(cli, volname, &serial_num, &create_date)) {
|
||||||
|
d_printf("Errr %s getting volume info\n",cli_errstr(cli));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
d_printf("Volume: |%s| serial number 0x%x\n", volname, (unsigned int)serial_num);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Hard link files using the NT call.
|
Hard link files using the NT call.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -2748,6 +2767,7 @@ static struct
|
|||||||
{"tar",cmd_tar,"tar <c|x>[IXFqbgNan] current directory to/from <file name>",{COMPL_NONE,COMPL_NONE}},
|
{"tar",cmd_tar,"tar <c|x>[IXFqbgNan] current directory to/from <file name>",{COMPL_NONE,COMPL_NONE}},
|
||||||
{"tarmode",cmd_tarmode,"<full|inc|reset|noreset> tar's behaviour towards archive bits",{COMPL_NONE,COMPL_NONE}},
|
{"tarmode",cmd_tarmode,"<full|inc|reset|noreset> tar's behaviour towards archive bits",{COMPL_NONE,COMPL_NONE}},
|
||||||
{"translate",cmd_translate,"toggle text translation for printing",{COMPL_NONE,COMPL_NONE}},
|
{"translate",cmd_translate,"toggle text translation for printing",{COMPL_NONE,COMPL_NONE}},
|
||||||
|
{"volume",cmd_volume,"print the volume name",{COMPL_NONE,COMPL_NONE}},
|
||||||
{"vuid",cmd_vuid,"change current vuid",{COMPL_NONE,COMPL_NONE}},
|
{"vuid",cmd_vuid,"change current vuid",{COMPL_NONE,COMPL_NONE}},
|
||||||
{"logon",cmd_logon,"establish new logon",{COMPL_NONE,COMPL_NONE}},
|
{"logon",cmd_logon,"establish new logon",{COMPL_NONE,COMPL_NONE}},
|
||||||
{"listconnect",cmd_list_connect,"list open connections",{COMPL_NONE,COMPL_NONE}},
|
{"listconnect",cmd_list_connect,"list open connections",{COMPL_NONE,COMPL_NONE}},
|
||||||
|
@ -132,3 +132,118 @@ cleanup:
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL cli_get_fs_volume_info_old(struct cli_state *cli, fstring volume_name, uint32 *pserial_number)
|
||||||
|
{
|
||||||
|
BOOL ret = False;
|
||||||
|
uint16 setup;
|
||||||
|
char param[2];
|
||||||
|
char *rparam=NULL, *rdata=NULL;
|
||||||
|
unsigned int rparam_count=0, rdata_count=0;
|
||||||
|
unsigned char nlen;
|
||||||
|
|
||||||
|
setup = TRANSACT2_QFSINFO;
|
||||||
|
|
||||||
|
SSVAL(param,0,SMB_INFO_VOLUME);
|
||||||
|
|
||||||
|
if (!cli_send_trans(cli, SMBtrans2,
|
||||||
|
NULL,
|
||||||
|
0, 0,
|
||||||
|
&setup, 1, 0,
|
||||||
|
param, 2, 0,
|
||||||
|
NULL, 0, 560)) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cli_receive_trans(cli, SMBtrans2,
|
||||||
|
&rparam, &rparam_count,
|
||||||
|
&rdata, &rdata_count)) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cli_is_error(cli)) {
|
||||||
|
ret = False;
|
||||||
|
goto cleanup;
|
||||||
|
} else {
|
||||||
|
ret = True;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rdata_count < 5) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pserial_number) {
|
||||||
|
*pserial_number = IVAL(rdata,0);
|
||||||
|
}
|
||||||
|
nlen = CVAL(rdata,l2_vol_cch);
|
||||||
|
clistr_pull(cli, volume_name, rdata + l2_vol_szVolLabel, sizeof(fstring), nlen, STR_NOALIGN);
|
||||||
|
|
||||||
|
/* todo: but not yet needed
|
||||||
|
* return the other stuff
|
||||||
|
*/
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
SAFE_FREE(rparam);
|
||||||
|
SAFE_FREE(rdata);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name, uint32 *pserial_number, time_t *pdate)
|
||||||
|
{
|
||||||
|
BOOL ret = False;
|
||||||
|
uint16 setup;
|
||||||
|
char param[2];
|
||||||
|
char *rparam=NULL, *rdata=NULL;
|
||||||
|
unsigned int rparam_count=0, rdata_count=0;
|
||||||
|
unsigned int nlen;
|
||||||
|
|
||||||
|
setup = TRANSACT2_QFSINFO;
|
||||||
|
|
||||||
|
SSVAL(param,0,SMB_QUERY_FS_VOLUME_INFO);
|
||||||
|
|
||||||
|
if (!cli_send_trans(cli, SMBtrans2,
|
||||||
|
NULL,
|
||||||
|
0, 0,
|
||||||
|
&setup, 1, 0,
|
||||||
|
param, 2, 0,
|
||||||
|
NULL, 0, 560)) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cli_receive_trans(cli, SMBtrans2,
|
||||||
|
&rparam, &rparam_count,
|
||||||
|
&rdata, &rdata_count)) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cli_is_error(cli)) {
|
||||||
|
ret = False;
|
||||||
|
goto cleanup;
|
||||||
|
} else {
|
||||||
|
ret = True;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rdata_count < 19) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdate) {
|
||||||
|
*pdate = interpret_long_date(rdata);
|
||||||
|
}
|
||||||
|
if (pserial_number) {
|
||||||
|
*pserial_number = IVAL(rdata,8);
|
||||||
|
}
|
||||||
|
nlen = IVAL(rdata,12);
|
||||||
|
clistr_pull(cli, volume_name, rdata + 18, sizeof(fstring), nlen, STR_UNICODE);
|
||||||
|
|
||||||
|
/* todo: but not yet needed
|
||||||
|
* return the other stuff
|
||||||
|
*/
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
SAFE_FREE(rparam);
|
||||||
|
SAFE_FREE(rdata);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user