亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mt.c

?? mt 是linux下得磁帶機
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*	This file contains the source of the 'mt' program intended for	Linux systems. The program supports the basic mt commands found	in most Unix-like systems. In addition to this the program	supports several commands designed for use with the Linux SCSI	tape drive.	Maintained by Kai M鋕isara (email Kai.Makisara@kolumbus.fi)	Copyright by Kai M鋕isara, 1998 - 2005. The program may be distributed	according to the GNU Public License	Last Modified: Sun Aug 21 21:48:06 2005 by kai.makisara*/#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <errno.h>#include <fcntl.h>#include <sys/types.h>#include <sys/ioctl.h>#include "mtio.h"#ifndef DEFTAPE#define DEFTAPE "/dev/tape"     /* default tape device */#endif /* DEFTAPE */#define VERSION "0.9b"typedef int (* cmdfunc)(/* int, struct cmdef_tr *, int, char ** */);typedef struct cmdef_tr {    char *cmd_name;    int cmd_code;    cmdfunc cmd_function;    int cmd_count_bits;    unsigned char cmd_fdtype;    unsigned char arg_cnt;    int error_tests;} cmdef_tr;#define NO_FD      0#define FD_RDONLY  1#define FD_RDWR    2#define NO_ARGS       0#define ONE_ARG       1#define TWO_ARGS      2#define MULTIPLE_ARGS 255#define DO_BOOLEANS    1002#define SET_BOOLEANS   1003#define CLEAR_BOOLEANS 1004#define ET_ONLINE    1#define ET_WPROT     2static void usage(int);static int do_standard(int, cmdef_tr *, int, char **);static int do_drvbuffer(int, cmdef_tr *, int, char **);static int do_options(int, cmdef_tr *, int, char **);static int do_tell(int, cmdef_tr *, int, char **);static int do_partseek(int, cmdef_tr *, int, char **);static int do_status(int, cmdef_tr *, int, char **);static int print_densities(int, cmdef_tr *, int, char **);static int do_asf(int, cmdef_tr *, int, char **);static void test_error(int, cmdef_tr *);static cmdef_tr cmds[] = {    { "weof",		MTWEOF,	  do_standard, 0, FD_RDWR,   ONE_ARG,    ET_ONLINE | ET_WPROT },    { "wset",		MTWSM,	  do_standard, 0, FD_RDWR,   ONE_ARG,    ET_ONLINE | ET_WPROT },    { "eof",		MTWEOF,	  do_standard, 0, FD_RDWR, ONE_ARG,    ET_ONLINE },    { "fsf",		MTFSF,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "fsfm",		MTFSFM,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "bsf",		MTBSF,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "bsfm",		MTBSFM,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "fsr",		MTFSR,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "bsr",		MTBSR,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "fss",		MTFSS,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "bss",		MTBSS,	  do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "rewind",		MTREW,	  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "offline",	MTOFFL,	  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "rewoffl",	MTOFFL,	  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "eject",		MTOFFL,	  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "retension",	MTRETEN,  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "eod",		MTEOM,	  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "seod",		MTEOM,	  do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "seek",		MTSEEK,   do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "tell",		MTTELL,	  do_tell,     0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "status",		MTNOP,	  do_status,   0, FD_RDONLY, NO_ARGS,    0 },    { "erase",		MTERASE,  do_standard, 0, FD_RDWR,   ONE_ARG,    ET_ONLINE },    { "setblk",		MTSETBLK, do_standard, 0, FD_RDONLY, ONE_ARG,    0 },    { "lock",		MTLOCK,   do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "unlock", 	MTUNLOCK, do_standard, 0, FD_RDONLY, NO_ARGS,    ET_ONLINE },    { "load",		MTLOAD,	  do_standard, 0, FD_RDONLY, ONE_ARG,    0 },    { "compression",	MTCOMPRESSION,  do_standard,  0, FD_RDONLY, ONE_ARG,    0 },    { "setdensity",	MTSETDENSITY,   do_standard,  0, FD_RDONLY, ONE_ARG,    0 },    { "drvbuffer",	MTSETDRVBUFFER, do_drvbuffer, 0, FD_RDONLY, ONE_ARG,    0 },    { "stwrthreshold",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_WRITE_THRESHOLD,      FD_RDONLY, ONE_ARG, 0},    { "stoptions",	DO_BOOLEANS,    do_options,   0, FD_RDONLY,      MULTIPLE_ARGS, 0},    { "stsetoptions",   SET_BOOLEANS,   do_options,   0, FD_RDONLY,      MULTIPLE_ARGS, 0},    { "stclearoptions", CLEAR_BOOLEANS, do_options,   0, FD_RDONLY,      MULTIPLE_ARGS, 0},    { "defblksize",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_DEF_BLKSIZE,      FD_RDONLY, ONE_ARG, 0},    { "defdensity",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_DEF_DENSITY,      FD_RDONLY, ONE_ARG, 0},    { "defdrvbuffer",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_DEF_DRVBUFFER,      FD_RDONLY, ONE_ARG, 0},    { "defcompression", MTSETDRVBUFFER, do_drvbuffer, MT_ST_DEF_COMPRESSION,      FD_RDONLY, ONE_ARG, 0},    { "stsetcln",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_SET_CLN,      FD_RDONLY, ONE_ARG, 0},    { "sttimeout",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_SET_TIMEOUT,      FD_RDONLY, ONE_ARG, 0},    { "stlongtimeout",	MTSETDRVBUFFER, do_drvbuffer, MT_ST_SET_LONG_TIMEOUT,      FD_RDONLY, ONE_ARG, 0},    { "densities",	0, print_densities,     0, NO_FD,     NO_ARGS,    0 },    { "setpartition",	MTSETPART, do_standard, 0, FD_RDONLY, ONE_ARG,    ET_ONLINE },    { "mkpartition",	MTMKPART,  do_standard, 0, FD_RDWR,   ONE_ARG,    ET_ONLINE },    { "partseek",	0,         do_partseek, 0, FD_RDONLY, TWO_ARGS,    ET_ONLINE },    { "asf",		0,         do_asf, MTREW,  FD_RDONLY, ONE_ARG,    ET_ONLINE },    { NULL, 0, 0, 0 }};static struct densities {    int code;    char *name;} density_tbl[] = {    {0x00, "default"},    {0x01, "NRZI (800 bpi)"},    {0x02, "PE (1600 bpi)"},    {0x03, "GCR (6250 bpi)"},    {0x04, "QIC-11"},    {0x05, "QIC-45/60 (GCR, 8000 bpi)"},    {0x06, "PE (3200 bpi)"},    {0x07, "IMFM (6400 bpi)"},    {0x08, "GCR (8000 bpi)"},    {0x09, "GCR (37871 bpi)"},    {0x0a, "MFM (6667 bpi)"},    {0x0b, "PE (1600 bpi)"},    {0x0c, "GCR (12960 bpi)"},    {0x0d, "GCR (25380 bpi)"},    {0x0f, "QIC-120 (GCR 10000 bpi)"},    {0x10, "QIC-150/250 (GCR 10000 bpi)"},    {0x11, "QIC-320/525 (GCR 16000 bpi)"},    {0x12, "QIC-1350 (RLL 51667 bpi)"},    {0x13, "DDS (61000 bpi)"},    {0x14, "EXB-8200 (RLL 43245 bpi)"},    {0x15, "EXB-8500 or QIC-1000"},    {0x16, "MFM 10000 bpi"},    {0x17, "MFM 42500 bpi"},    {0x18, "TZ86"},    {0x19, "DLT 10GB"},    {0x1a, "DLT 20GB"},    {0x1b, "DLT 35GB"},    {0x1c, "QIC-385M"},    {0x1d, "QIC-410M"},    {0x1e, "QIC-1000C"},    {0x1f, "QIC-2100C"},    {0x20, "QIC-6GB"},    {0x21, "QIC-20GB"},    {0x22, "QIC-2GB"},    {0x23, "QIC-875"},    {0x24, "DDS-2"},    {0x25, "DDS-3"},    {0x26, "DDS-4 or QIC-4GB"},    {0x27, "Exabyte Mammoth"},    {0x28, "Exabyte Mammoth-2"},    {0x29, "QIC-3080MC"},    {0x30, "AIT-1 or MLR3"},    {0x31, "AIT-2"},    {0x32, "AIT-3"},    {0x33, "SLR6"},    {0x34, "SLR100"},    {0x40, "DLT1 40 GB, or Ultrium"},    {0x41, "DLT 40GB, or Ultrium2"},    {0x42, "LTO-2"},    {0x45, "QIC-3095-MC (TR-4)"},    {0x47, "TR-5"},    {0x80, "DLT 15GB uncomp. or Ecrix"},    {0x81, "DLT 15GB compressed"},    {0x82, "DLT 20GB uncompressed"},    {0x83, "DLT 20GB compressed"},    {0x84, "DLT 35GB uncompressed"},    {0x85, "DLT 35GB compressed"},    {0x86, "DLT1 40 GB uncompressed"},    {0x87, "DLT1 40 GB compressed"},    {0x88, "DLT 40GB uncompressed"},    {0x89, "DLT 40GB compressed"},    {0x8c, "EXB-8505 compressed"},    {0x90, "SDLT110 uncompr/EXB-8205 compr"},    {0x91, "SDLT110 compressed"},    {0x92, "SDLT160 uncompressed"},    {0x93, "SDLT160 comprssed"}};#define NBR_DENSITIES (sizeof(density_tbl) / sizeof(struct densities))static struct booleans {    char *name;    unsigned long bitmask;    char *expl;} boolean_tbl[] = {    {"buffer-writes", MT_ST_BUFFER_WRITES, "buffered writes"},    {"async-writes",  MT_ST_ASYNC_WRITES,  "asynchronous writes"},    {"read-ahead",    MT_ST_READ_AHEAD,    "read-ahead for fixed block size"},    {"debug",         MT_ST_DEBUGGING,     "debugging (if compiled into driver)"},    {"two-fms",       MT_ST_TWO_FM,        "write two filemarks when file closed"},    {"fast-eod",      MT_ST_FAST_MTEOM, "space directly to eod (and lose file number)"},    {"auto-lock",     MT_ST_AUTO_LOCK,     "automatically lock/unlock drive door"},    {"def-writes",    MT_ST_DEF_WRITES,    "the block size and density are for writes"},    {"can-bsr",       MT_ST_CAN_BSR,       "drive can space backwards well"},    {"no-blklimits",  MT_ST_NO_BLKLIMS,    "drive doesn't support read block limits"},    {"can-partitions",MT_ST_CAN_PARTITIONS,"drive can handle partitioned tapes"},    {"scsi2logical",  MT_ST_SCSI2LOGICAL,  "logical block addresses used with SCSI-2"},    {"no-wait",       MT_ST_NOWAIT,        "immediate mode for rewind, etc."},#ifdef MT_ST_SYSV    {"sysv",	      MT_ST_SYSV,	   "enable the SystemV semantics"},#endif    {"cleaning",      MT_ST_SET_CLN,	   "set the cleaning bit location and mask"},    {NULL, 0}};static char *tape_name;   /* The tape name for messages */	intmain(int argc, char **argv){    int mtfd, cmd_code, i, argn, len, oflags;    char *cmdstr;    cmdef_tr *comp, *comp2;    for (argn=1; argn < argc; argn++)	if (*argv[argn] == '-')	    switch (*(argv[argn] + 1)) {	    case 'f':	    case 't':		argn += 1;		if (argn >= argc) {		    usage(0);		    exit(1);		}		tape_name = argv[argn];		break;	    case 'h':		usage(1);		exit(0);		break;	    case 'v':		printf("mt-st v. %s\n", VERSION);		exit(0);		break;	    case '-':		if (*(argv[argn] + 1) == '-' &&		    *(argv[argn] + 2) == 'v') {		    printf("mt-st v. %s\n", VERSION);		    exit(0);		}		/* Fall through */	    default:		usage(0);		exit(1);	}	else	    break;    if (tape_name == NULL && (tape_name = getenv("TAPE")) == NULL)	tape_name = DEFTAPE;           if (argn >= argc ) {	usage(0);	exit(1);    }    cmdstr = argv[argn++];    len = strlen(cmdstr);    for (comp = cmds; comp->cmd_name != NULL; comp++)	if (strncmp(cmdstr, comp->cmd_name, len) == 0)	    break;    if (comp->cmd_name == NULL) {	fprintf(stderr, "mt: unknown command \"%s\"\n", cmdstr);	usage(1);	exit(1);    }    if (len != strlen(comp->cmd_name)) {	for (comp2 = comp + 1; comp2->cmd_name != NULL; comp2++)	    if (strncmp(cmdstr, comp2->cmd_name, len) == 0)		break;	if (comp2->cmd_name != NULL) {	    fprintf(stderr, "mt: ambiguous command \"%s\"\n", cmdstr);	    usage(1);	    exit(1);	}    }    if (comp->arg_cnt != MULTIPLE_ARGS && comp->arg_cnt < argc - argn) {	fprintf(stderr, "mt: too many arguments for the command '%s'.\n",		comp->cmd_name);	exit(1);    }    cmd_code = comp->cmd_code;    if (comp->cmd_fdtype != NO_FD) {	oflags = comp->cmd_fdtype == FD_RDONLY ? O_RDONLY : O_RDWR;	if ((comp->error_tests & ET_ONLINE) == 0)	    oflags |= O_NONBLOCK;	if ((mtfd = open(tape_name, oflags)) < 0) {	    perror(tape_name);	    exit(1);	}    }    else	mtfd = (-1);    if (comp->cmd_function != NULL) {	i = comp->cmd_function(mtfd, comp, argc - argn,			       (argc - argn > 0 ? argv + argn : NULL));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
艳妇臀荡乳欲伦亚洲一区| 亚洲激情一二三区| 不卡电影免费在线播放一区| 亚洲精品国产第一综合99久久| 欧美性一级生活| 国产精品系列在线观看| 石原莉奈在线亚洲二区| 激情综合一区二区三区| 成人午夜私人影院| 欧美精品自拍偷拍| 这里只有精品视频在线观看| 国产精品白丝在线| 成人免费电影视频| 国产日韩欧美不卡| 毛片av一区二区| 91精品蜜臀在线一区尤物| 亚洲一区在线观看视频| 国产成人一级电影| 欧美高清视频www夜色资源网| 亚洲一区二区在线观看视频 | 福利电影一区二区三区| 欧美男男青年gay1069videost| 国产精品视频yy9299一区| 成人av电影在线观看| 91色porny蝌蚪| 日韩 欧美一区二区三区| 精品美女被调教视频大全网站| 日本一区二区三区国色天香| 99免费精品在线| 国产精品萝li| 7777精品伊人久久久大香线蕉完整版 | 欧美一卡二卡三卡四卡| 国产精品伊人色| 亚洲r级在线视频| 国产在线麻豆精品观看| 亚洲一区二区在线视频| 精品国产露脸精彩对白| 91久久国产综合久久| 国模少妇一区二区三区| 亚洲国产精品天堂| 国产精品久99| 国产婷婷色一区二区三区四区| 欧美图片一区二区三区| 国产精品综合二区| 日韩无一区二区| 欧美日韩国产首页| 91久久精品日日躁夜夜躁欧美| 国产精品小仙女| 国模娜娜一区二区三区| 久久99最新地址| 久久国产日韩欧美精品| 图片区日韩欧美亚洲| 欧美福利视频一区| 欧美人与z0zoxxxx视频| 91电影在线观看| 在线观看欧美黄色| 欧美日韩国产综合久久| 精品视频1区2区| 欧美视频中文字幕| 久久激情综合网| 国产美女娇喘av呻吟久久| 国产精品18久久久久久久久| 激情欧美一区二区| 免费精品99久久国产综合精品| 亚洲电影第三页| 天天爽夜夜爽夜夜爽精品视频| 人人爽香蕉精品| 久久 天天综合| 国产a久久麻豆| 91麻豆精品在线观看| 欧美性极品少妇| 欧美大片国产精品| 国产精品久久久久久福利一牛影视| 国产日韩欧美精品一区| 中文字幕亚洲欧美在线不卡| 国产精品久久久久久久久久免费看| 国产精品美女久久久久av爽李琼 | 欧美在线不卡视频| 91精品中文字幕一区二区三区| 日韩一级精品视频在线观看| 国产日产欧美一区二区三区| 亚洲九九爱视频| 久久这里只有精品6| 一区二区三区国产精品| 久久爱另类一区二区小说| 国产91综合一区在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 555夜色666亚洲国产免| 亚洲欧洲国产日本综合| 国模大尺度一区二区三区| 欧美日本乱大交xxxxx| 国产精品久久久久久亚洲毛片| 日产精品久久久久久久性色| 99re成人精品视频| 国产精品视频一二三区| 经典三级一区二区| 日韩三级中文字幕| 欧美a级理论片| 欧美一区二区三区视频免费播放| 一本久道中文字幕精品亚洲嫩| 久久精品无码一区二区三区 | 日韩精品中文字幕一区| 亚洲.国产.中文慕字在线| 在线亚洲精品福利网址导航| 久久精品视频一区二区三区| 国产在线精品一区二区三区不卡| 97久久精品人人澡人人爽| 久久精品视频在线免费观看| 国产一区二区0| 国产精品拍天天在线| 成人性生交大合| 亚洲精品视频在线观看免费| 一本色道久久综合狠狠躁的推荐 | 国产不卡免费视频| 成人欧美一区二区三区小说| 成人午夜激情在线| 亚洲激情校园春色| 欧美一区二区三区在线电影| 久久se这里有精品| 中文字幕在线一区免费| 欧美综合一区二区| 国内精品久久久久影院色| 国产精品毛片久久久久久| 欧亚洲嫩模精品一区三区| 日本视频中文字幕一区二区三区| 精品欧美一区二区久久| 不卡大黄网站免费看| 偷窥国产亚洲免费视频| 国产精品丝袜一区| 99视频精品全部免费在线| 一区二区三区中文字幕精品精品| 日韩欧美高清在线| 91在线观看污| 国产传媒日韩欧美成人| 亚洲国产精品天堂| 亚洲色图在线看| 26uuu欧美日本| 欧美tickling挠脚心丨vk| 99国产精品国产精品毛片| 秋霞影院一区二区| 一区二区三区日韩精品视频| 国产日韩一级二级三级| 3d动漫精品啪啪1区2区免费| 91丨九色丨蝌蚪富婆spa| 久久精品国产精品亚洲精品| 午夜亚洲福利老司机| 亚洲美女视频在线观看| 亚洲色图制服丝袜| 亚洲美女区一区| 亚洲精品国久久99热| 亚洲天堂久久久久久久| 亚洲国产精品t66y| 国产精品久久久久久久蜜臀 | 色狠狠桃花综合| 一本久久精品一区二区| 91在线高清观看| 精品在线观看视频| 国产精品中文欧美| 国产成人8x视频一区二区 | 国产精品私人影院| 成人免费在线播放视频| 国产精品色婷婷| 99re在线精品| 欧美日韩mp4| 精品国产乱码久久久久久蜜臀| 欧美电视剧免费观看| 久久久国产一区二区三区四区小说| 久久这里只有精品首页| 国产精品免费视频一区| 亚洲精品久久7777| 另类人妖一区二区av| 成人一级片在线观看| 欧美午夜不卡视频| 欧美精品一区二区三区蜜臀| 亚洲色图制服诱惑| 国产真实乱对白精彩久久| 懂色av噜噜一区二区三区av| 99re66热这里只有精品3直播| 69堂成人精品免费视频| 国产日韩亚洲欧美综合| 亚洲国产日韩在线一区模特| 久久99久久99小草精品免视看| 国产成人精品免费看| 欧美色手机在线观看| 精品久久久久一区二区国产| 一区二区三区美女视频| 亚洲视频综合在线| 国产精品夜夜爽| 精品乱人伦小说| 偷拍与自拍一区| 精品视频在线看| 亚洲欧美日韩国产一区二区三区 | 精品国产一区二区三区av性色| 亚洲另类中文字| jizz一区二区| 中文字幕一区日韩精品欧美| 中文字幕一区二区三区色视频| 五月天丁香久久| 91丨porny丨蝌蚪视频| 国产精品伦理一区二区|