📄 tcl_config.c
字号:
configGetFsInfoCmd(void* clientData, Tcl_Interp* interp, int argc, char* argv[] __attribute__ ((unused))){ NdmpConnection connection = (NdmpConnection)clientData; ndmp_config_get_fs_info_reply* reply = 0; int r; u_long i, j; Tcl_DString list; char buf[32]; ndmp_fs_info* fsinfo; ndmp_pval* pval; if (argc != 1) { Tcl_SetResult(interp, "usage: config_get_fs_info", TCL_STATIC); return(TCL_ERROR); } r = ndmpSendRequest(connection, NDMP_CONFIG_GET_FS_INFO, NDMP_NO_ERR, 0, (void*)&reply); if (ndmpcCheckNdmpSend(interp, r, reply ? reply->error : 0)) { ndmpFreeMessage(connection); return(r < 0 ? TCL_ERROR : TCL_OK); } for (i = 0; i < reply->fs_info.fs_info_len; i++) { fsinfo = &reply->fs_info.fs_info_val[i]; sprintf(buf, "%lx", fsinfo->invalid); ndmpcTclAddToResult(interp, "invalid", buf); ndmpcTclAddToResult(interp, "fs_type", fsinfo->fs_type); ndmpcTclAddToResult(interp, "fs_logical_device", fsinfo->fs_logical_device); ndmpcTclAddToResult(interp, "fs_physical_device", fsinfo->fs_physical_device); sprintf(buf, "%lld", quadToLongLong(fsinfo->total_size)); ndmpcTclAddToResult(interp, "total_size", buf); sprintf(buf, "%lld", quadToLongLong(fsinfo->used_size)); ndmpcTclAddToResult(interp, "used_size", buf); sprintf(buf, "%lld", quadToLongLong(fsinfo->avail_size)); ndmpcTclAddToResult(interp, "avail_size", buf); sprintf(buf, "%lld", quadToLongLong(fsinfo->total_inodes)); ndmpcTclAddToResult(interp, "total_inodes", buf); sprintf(buf, "%lld", quadToLongLong(fsinfo->used_inodes)); ndmpcTclAddToResult(interp, "used_inodes", buf); Tcl_DStringInit(&list); for (j = 0; j < fsinfo->fs_env.fs_env_len; j++) { pval = &fsinfo->fs_env.fs_env_val[j]; Tcl_DStringStartSublist(&list); Tcl_DStringAppend(&list, pval->name, -1); Tcl_DStringAppendElement(&list, pval->value); Tcl_DStringEndSublist(&list); } ndmpcTclAddToResult(interp, "fs_env", Tcl_DStringValue(&list)); Tcl_DStringFree(&list); } ndmpFreeMessage(connection); return(TCL_OK);}/* * configGetTapeInfoCmd * Sends a ndmp_config_get_tape_info_request to the NDMP server. * usage: config_get_tape_info * * Parameters: * clientData (input) - connection handle. * interp (input) - Tcl interpreter. * argc (input) - argument count. * argv (input) - argument array. * * Returns: * Tcl error code. */intconfigGetTapeInfoCmd(void* clientData, Tcl_Interp* interp, int argc, char* argv[] __attribute__ ((unused))){ NdmpConnection connection = (NdmpConnection)clientData; ndmp_config_get_tape_info_reply* reply = 0; int r; ndmp_device_info* info; ndmp_device_capability* cap; ndmp_pval* pval; u_long i; u_long j; u_long k; Tcl_DString list; if (argc != 1) { Tcl_SetResult(interp, "usage: config_get_tape_info", TCL_STATIC); return(TCL_ERROR); } r = ndmpSendRequest(connection, NDMP_CONFIG_GET_TAPE_INFO, NDMP_NO_ERR, 0, (void*)&reply); if (ndmpcCheckNdmpSend(interp, r, reply ? reply->error : 0)) { ndmpFreeMessage(connection); return(r < 0 ? TCL_ERROR : TCL_OK); } for (i = 0; i < reply->tape_info.tape_info_len; i++) { info = &reply->tape_info.tape_info_val[i]; ndmpcTclAddToResult(interp, "model", info->model); for (j = 0; j < info->caplist.caplist_len; j++) { char attrStr[32]; cap = &info->caplist.caplist_val[j]; ndmpcTclAddToResult(interp, "device", cap->device); sprintf(attrStr, "0x%lx", cap->attr); ndmpcTclAddToResult(interp, "attr", attrStr); Tcl_DStringInit(&list); for (k = 0; k < cap->capability.capability_len; k++) { pval = &cap->capability.capability_val[k]; Tcl_DStringStartSublist(&list); Tcl_DStringAppend(&list, pval->name, -1); Tcl_DStringAppendElement(&list, pval->value); Tcl_DStringEndSublist(&list); } ndmpcTclAddToResult(interp, "capability", Tcl_DStringValue(&list)); Tcl_DStringFree(&list); } } ndmpFreeMessage(connection); return(TCL_OK);}/* * configGetScsiInfoCmd * Sends a ndmp_config_get_scsi_info_request to the NDMP server. * usage: config_get_scsi_info * * Parameters: * clientData (input) - connection handle. * interp (input) - Tcl interpreter. * argc (input) - argument count. * argv (input) - argument array. * * Returns: * Tcl error code. */intconfigGetScsiInfoCmd(void* clientData, Tcl_Interp* interp, int argc, char* argv[] __attribute__ ((unused))){ NdmpConnection connection = (NdmpConnection)clientData; ndmp_config_get_scsi_info_reply* reply = 0; int r; ndmp_device_info* info; ndmp_device_capability* cap; ndmp_pval* pval; u_long i; u_long j; u_long k; Tcl_DString list; if (argc != 1) { Tcl_SetResult(interp, "usage: config_get_scsi_info", TCL_STATIC); return(TCL_ERROR); } r = ndmpSendRequest(connection, NDMP_CONFIG_GET_SCSI_INFO, NDMP_NO_ERR, 0, (void*)&reply); if (ndmpcCheckNdmpSend(interp, r, reply ? reply->error : 0)) { ndmpFreeMessage(connection); return(r < 0 ? TCL_ERROR : TCL_OK); } for (i = 0; i < reply->scsi_info.scsi_info_len; i++) { info = &reply->scsi_info.scsi_info_val[i]; ndmpcTclAddToResult(interp, "model", info->model); for (j = 0; j < info->caplist.caplist_len; j++) { char attrStr[32]; cap = &info->caplist.caplist_val[j]; ndmpcTclAddToResult(interp, "device", cap->device); sprintf(attrStr, "0x%lx", cap->attr); ndmpcTclAddToResult(interp, "attr", attrStr); Tcl_DStringInit(&list); for (k = 0; k < cap->capability.capability_len; k++) { pval = &cap->capability.capability_val[k]; Tcl_DStringStartSublist(&list); Tcl_DStringAppend(&list, pval->name, -1); Tcl_DStringAppendElement(&list, pval->value); Tcl_DStringEndSublist(&list); } ndmpcTclAddToResult(interp, "capability", Tcl_DStringValue(&list)); Tcl_DStringFree(&list); } } ndmpFreeMessage(connection); return(TCL_OK);}/* * configGetServerInfoCmd * Sends a ndmp_config_get_server_info request to the NDMP server. * usage: config_get_server_info * * Parameters: * clientData (input) - connection handle. * interp (input) - Tcl interpreter. * argc (input) - argument count. * argv (input) - argument array. * * Returns: * Tcl error code. */intconfigGetServerInfoCmd(void* clientData, Tcl_Interp* interp, int argc, char* argv[] __attribute__ ((unused))){ NdmpConnection connection = (NdmpConnection)clientData; ndmp_config_get_server_info_reply* reply = 0; int r; u_long i; Tcl_DString list; if (argc != 1) { Tcl_SetResult(interp, "usage: config_get_server_info", TCL_STATIC); return(TCL_ERROR); } r = ndmpSendRequest(connection, NDMP_CONFIG_GET_SERVER_INFO, NDMP_NO_ERR, 0, (void*)&reply); if (ndmpcCheckNdmpSend(interp, r, reply ? reply->error : 0)) { ndmpFreeMessage(connection); return(r < 0 ? TCL_ERROR : TCL_OK); } ndmpcTclAddToResult(interp, "vendor_name", reply->vendor_name); ndmpcTclAddToResult(interp, "product_name", reply->product_name); ndmpcTclAddToResult(interp, "revision_number", reply->revision_number); Tcl_DStringInit(&list); for (i = 0; i < reply->auth_type.auth_type_len; i++) { char *type; switch (reply->auth_type.auth_type_val[i]) { case NDMP_AUTH_NONE: type = "None "; break; case NDMP_AUTH_TEXT: type = "Text "; break; case NDMP_AUTH_MD5: type = "MD5 "; break; default: type = "Unsupported "; break; } Tcl_DStringAppend(&list, type, -1); } ndmpcTclAddToResult(interp, "auth_types", Tcl_DStringValue(&list)); Tcl_DStringFree(&list); ndmpFreeMessage(connection); return(TCL_OK);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -