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

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

?? vlp.c

?? samba-3.0.22.tar.gz 編譯smb服務器的源碼
?? C
字號:
/*    Unix SMB/Netbios implementation.   Virtual lp system for printer testing   Copyright (C) Tim Potter 2000      This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.      This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "includes.h"#define PRINT_TDB "/tmp/vlp.tdb"#define PRINT_FIRSTJOB "100"static TDB_CONTEXT *tdb;struct vlp_job {	fstring owner;	int jobid;	fstring jobname;	int size;	int status;	time_t submit_time;	int deleted;};/* Print usage */static void usage(void){	printf("Usage: print-test lpq|lprm|print|queuepause|queueresume|"	       "lppause|lpresume [args]\n");}/* Return an array of vlp jobs that is the printer queue */static void get_job_list(char *printer, struct vlp_job **job_list, 			 int *num_jobs){	fstring keystr;	TDB_DATA data;	slprintf(keystr, sizeof(keystr) - 1, "LPQ/%s", printer);	data = tdb_fetch_by_string(tdb, keystr);	*job_list = (struct vlp_job *)data.dptr;	*num_jobs = data.dsize / sizeof(struct vlp_job);}/* Store an array of vl jobs for the queue */static void set_job_list(char *printer, struct vlp_job *job_list, 			 int num_jobs){	fstring keystr;	slprintf(keystr, sizeof(keystr) - 1, "LPQ/%s", printer);	tdb_store_by_string(tdb, keystr, job_list, 			    num_jobs * sizeof(struct vlp_job));}/* Return the next job number for a printer */static int next_jobnum(char *printer){	fstring keystr;	int jobnum;	slprintf(keystr, sizeof(keystr) - 1, "JOBNUM/%s", printer);	tdb_lock_bystring(tdb, keystr);	jobnum = tdb_fetch_int(tdb, keystr);	/* Create next job index if none exists */	if (jobnum == -1) {		jobnum = atoi(PRINT_FIRSTJOB);	}	jobnum++;	tdb_store_int(tdb, keystr, jobnum);	tdb_unlock_bystring(tdb, keystr);	return jobnum;}static void set_printer_status(char *printer, int status){	fstring keystr;	int result;	slprintf(keystr, sizeof(keystr) - 1, "STATUS/%s", printer);	result = tdb_store_int(tdb, keystr, status);}static int get_printer_status(char *printer){	fstring keystr;	TDB_DATA data;	slprintf(keystr, sizeof(keystr) - 1, "STATUS/%s", printer);	data.dptr = keystr;	data.dsize = strlen(keystr) + 1;	if (!tdb_exists(tdb, data)) {		set_printer_status(printer, LPSTAT_OK);		return LPSTAT_OK;	}	return tdb_fetch_int(tdb, keystr);}/* Display printer queue */static int lpq_command(int argc, char **argv){	char *printer;	struct vlp_job *job_list = NULL;	int i, num_jobs, job_count = 0;	if (argc != 2) {		printf("Usage: lpq <printername>\n");		return 1;	}	printer = argv[1];	/* Display printer status */	switch (get_printer_status(printer)) {	case LPSTAT_OK:		printf("enabled\n");		break;	case LPSTAT_STOPPED:		printf("disabled\n");		break;	case LPSTAT_ERROR:	default:		printf("error\n");		break;	}	/* Print queued documents */	get_job_list(printer, &job_list, &num_jobs);	for (i = 0; i < num_jobs; i++) {		if (job_list[i].deleted) continue;		printf("%d\t%d\t%d\t%ld\t%s\t%s\n", job_list[i].jobid,		       job_list[i].size, 		       (i == 0 && job_list[i].status == LPQ_QUEUED) ? 		       LPQ_SPOOLING : job_list[i].status,		       job_list[i].submit_time, job_list[i].owner, 		       job_list[i].jobname);		job_count++;	}	free(job_list);	return 0;}/* Remove a job */static int lprm_command(int argc, char **argv){	char *printer;	int jobid, num_jobs, i;	struct vlp_job *job_list;	if (argc < 3) {		printf("Usage: lprm <printername> <jobid>\n");		return 1;	}	printer = argv[1];	jobid = atoi(argv[2]);	get_job_list(printer, &job_list, &num_jobs);	for (i = 0; i < num_jobs; i++) {		if (job_list[i].jobid == jobid) {			job_list[i].deleted = 1;			set_job_list(printer, job_list, num_jobs);			break;		}	}	return 0;}/* print command = print-test %p %s */static int print_command(int argc, char **argv){	char *printer;	fstring keystr;	struct passwd *pw;	TDB_DATA value;	struct vlp_job job;	int i;	if (argc < 3) {		printf("Usage: print <printername> <jobname>\n");		return 1;	}	printer = argv[1];	ZERO_STRUCT(job);	/* Create a job record */	for (i = 2; i < argc; i++) {		fstrcat(job.jobname, argv[i]);		if (i < argc - 1) {			fstrcat(job.jobname, " ");		}	}	if (!(pw = getpwuid(getuid()))) {		return 1;	}	fstrcpy(job.owner, pw->pw_name);	job.jobid = next_jobnum(printer);	job.size = 666;	job.submit_time = time(NULL);	/* Store job entry in queue */	slprintf(keystr, sizeof(keystr) - 1, "LPQ/%s", printer);		value = tdb_fetch_by_string(tdb, keystr);	if (value.dptr) {		/* Add job to end of queue */		value.dptr = realloc(value.dptr, value.dsize + 				     sizeof(struct vlp_job));		if (!value.dptr) return 1;		memcpy(value.dptr + value.dsize, &job, sizeof(struct vlp_job));		tdb_store_by_string(tdb, keystr, value.dptr, value.dsize +				    sizeof(struct vlp_job));		free(value.dptr);	} else {				/* Create new queue */		tdb_store_by_string(tdb, keystr, &job, sizeof(struct vlp_job));	}			return 0;}/* Pause the queue */static int queuepause_command(int argc, char **argv){	char *printer;	if (argc != 2) {		printf("Usage: queuepause <printername>\n");		return 1;	}	printer = argv[1];	set_printer_status(printer, LPSTAT_STOPPED);	return 0;}/* Resume the queue */static int queueresume_command(int argc, char **argv){	char *printer;	if (argc != 2) {		printf("Usage: queueresume <printername>\n");		return 1;	}	printer = argv[1];	set_printer_status(printer, LPSTAT_OK);	return 0;}/* Pause a job */static int lppause_command(int argc, char **argv){	struct vlp_job *job_list;	char *printer;	int jobid, num_jobs, i;	if (argc != 3) {		printf("Usage: lppause <printername> <jobid>\n");		return 1;	}	printer = argv[1];	jobid = atoi(argv[2]);	get_job_list(printer, &job_list, &num_jobs);	for (i = 0; i < num_jobs; i++) {		if (job_list[i].jobid == jobid) {			job_list[i].status = LPQ_PAUSED;			set_job_list(printer, job_list, num_jobs);			return 0;		}	}	return 1;}/* Resume a job */static int lpresume_command(int argc, char **argv){	struct vlp_job *job_list;	char *printer;	int jobid, num_jobs, i;	if (argc != 3) {		printf("Usage: lpresume <printername> <jobid>\n");		return 1;	}	printer = argv[1];	jobid = atoi(argv[2]);	get_job_list(printer, &job_list, &num_jobs);	for (i = 0; i < num_jobs; i++) {		if (job_list[i].jobid == jobid) {			job_list[i].status = LPQ_QUEUED;			set_job_list(printer, job_list, num_jobs);			return 0;		}	}	return 1;}int main(int argc, char **argv){	/* Parameter check */	if (argc == 1) {		usage();		return 1;	}	/* Initialise */	if (!(tdb = tdb_open(PRINT_TDB, 0, 0, O_RDWR | O_CREAT,			     0666))) {		printf("%s: unable to open %s\n", argv[0], PRINT_TDB);		return 1;	}	/* Ensure we are modes 666 */	chmod(PRINT_TDB, 0666);	/* Do commands */	if (strcmp(argv[1], "lpq") == 0) {		return lpq_command(argc - 1, &argv[1]);	}	if (strcmp(argv[1], "lprm") == 0) {		return lprm_command(argc - 1, &argv[1]);	}	if (strcmp(argv[1], "print") == 0) {		return print_command(argc - 1, &argv[1]);	}	if (strcmp(argv[1], "queuepause") == 0) {		return queuepause_command(argc - 1, &argv[1]);	}	if (strcmp(argv[1], "queueresume") == 0) {		return queueresume_command(argc - 1, &argv[1]);	}	if (strcmp(argv[1], "lppause") == 0) {		return lppause_command(argc - 1, &argv[1]);	}	if (strcmp(argv[1], "lpresume") == 0) {		return lpresume_command(argc - 1, &argv[1]);	}	/* Unknown command */	printf("%s: invalid command %s\n", argv[0], argv[1]);	return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱人伦偷精品视频不卡| 亚洲国产日日夜夜| 欧美白人最猛性xxxxx69交| 欧美日韩美少妇| 欧美美女喷水视频| 日韩免费在线观看| 精品国产精品一区二区夜夜嗨| 欧美一级片在线观看| 日韩欧美激情四射| 久久精子c满五个校花| 中文字幕+乱码+中文字幕一区| 国产精品美女久久福利网站 | 欧美综合色免费| 欧美日韩在线播| 日韩欧美色综合网站| 久久综合九色综合欧美就去吻| ww久久中文字幕| 成人免费一区二区三区在线观看| 亚洲精品久久久蜜桃| 亚洲午夜免费视频| 玖玖九九国产精品| 成人av中文字幕| 欧美日韩国产乱码电影| 精品奇米国产一区二区三区| 国产精品免费aⅴ片在线观看| 亚洲国产一区二区三区| 美女视频一区在线观看| 成人av在线网| 欧美一区欧美二区| 国产欧美一区二区在线观看| 亚洲一二三区在线观看| 狠狠狠色丁香婷婷综合久久五月| 成人白浆超碰人人人人| 制服丝袜成人动漫| 国产精品美女久久久久久久久久久 | 91在线视频网址| 3d动漫精品啪啪一区二区竹菊| 久久色在线观看| 亚洲一级二级三级| 成人小视频免费在线观看| 欧美人体做爰大胆视频| 国产欧美一区二区精品婷婷 | 韩国三级中文字幕hd久久精品| 99国产精品国产精品毛片| 日韩欧美电影在线| 一区二区三区在线免费| 懂色av一区二区在线播放| 欧美一区午夜精品| 亚洲福利电影网| av在线播放不卡| 久久久亚洲精品石原莉奈| 亚洲国产精品久久久男人的天堂| 成人午夜av电影| 久久色在线观看| 麻豆成人久久精品二区三区小说| 欧美三级视频在线观看| 国产精品女主播av| 国产91在线看| 欧美精品一区二区精品网| 天天综合日日夜夜精品| 在线看不卡av| 夜夜精品浪潮av一区二区三区| jlzzjlzz亚洲日本少妇| 国产精品热久久久久夜色精品三区 | 91久久精品日日躁夜夜躁欧美| 国产午夜亚洲精品理论片色戒 | www.成人在线| 久久久久国产精品麻豆| 久久99精品久久久久久久久久久久 | ...av二区三区久久精品| 粉嫩13p一区二区三区| 久久久国产精品午夜一区ai换脸| 国产在线视频不卡二| 精品少妇一区二区三区免费观看| 日本在线不卡视频一二三区| 555www色欧美视频| 卡一卡二国产精品 | 欧美激情综合五月色丁香| 国产成人免费在线视频| 国产欧美日韩在线| 成人av第一页| 亚洲激情在线播放| 欧美日韩综合一区| 日韩av电影一区| 精品国产髙清在线看国产毛片| 国产真实精品久久二三区| 国产性色一区二区| 99视频精品全部免费在线| 亚洲激情在线激情| 91麻豆精品91久久久久同性| 美女在线观看视频一区二区| 久久综合久久99| 91丨九色丨黑人外教| 亚洲一级二级三级在线免费观看| 欧美绝品在线观看成人午夜影视| 久久不见久久见免费视频1| 久久精品人人做| 色婷婷国产精品| 日韩极品在线观看| 久久精品夜色噜噜亚洲a∨| 99久久精品国产网站| 午夜av一区二区| 日本一区免费视频| 欧美日韩精品专区| 国产盗摄视频一区二区三区| 亚洲黄色免费电影| 欧美精品一区二区在线播放 | 亚洲一二三四区| 欧美tickling网站挠脚心| 99re热这里只有精品视频| 日韩avvvv在线播放| 国产精品久久毛片| 日韩欧美一区在线观看| 一本一道综合狠狠老| 国产一区二区三区在线观看精品| 亚洲精品ww久久久久久p站| 欧美日韩国产电影| 波多野结衣中文字幕一区| 久草精品在线观看| 亚洲一区在线观看视频| 久久久久亚洲蜜桃| 欧美精品精品一区| 91同城在线观看| 国产精品白丝jk白祙喷水网站 | 国产日韩精品一区二区浪潮av| 欧美日韩国产精品成人| 欧美日韩一区在线观看| 成人综合婷婷国产精品久久蜜臀| 性久久久久久久久久久久| 国产精品第四页| 久久日韩粉嫩一区二区三区| 欧美一卡在线观看| 91国产福利在线| 成人一区二区视频| 国产剧情在线观看一区二区| 日韩avvvv在线播放| 亚洲成国产人片在线观看| 亚洲美女屁股眼交3| 国产精品久久久久久久第一福利 | 91丨porny丨蝌蚪视频| 国产麻豆一精品一av一免费| 免费观看久久久4p| 免费在线看成人av| 日本午夜一本久久久综合| 日本欧美一区二区三区| 日韩专区一卡二卡| 日韩在线一区二区三区| 日日夜夜免费精品视频| 日韩国产欧美一区二区三区| 午夜av一区二区| 日本欧美肥老太交大片| 免费高清成人在线| 激情五月婷婷综合网| 国产精品一品二品| 粉嫩欧美一区二区三区高清影视| 丰满白嫩尤物一区二区| 日本丰满少妇一区二区三区| 99国产精品视频免费观看| 91在线精品一区二区三区| 91日韩在线专区| 在线观看区一区二| 91麻豆精品国产自产在线观看一区 | 91精品视频网| 欧美成人精品1314www| 久久嫩草精品久久久精品一| 国产精品无遮挡| 国产精品传媒视频| 亚洲国产综合人成综合网站| 日本vs亚洲vs韩国一区三区二区| 麻豆精品在线播放| 不卡的av电影| 欧美三级一区二区| 久久影院视频免费| 国产精品乱人伦| 亚洲国产日韩a在线播放| 日产国产高清一区二区三区| 国产精品一区在线观看乱码| 91老师国产黑色丝袜在线| 91精品国产综合久久久久久| 久久综合九色综合欧美98| 亚洲麻豆国产自偷在线| 欧美a级一区二区| 成人免费毛片aaaaa**| 欧美日韩激情在线| 久久久久久久久久久久久夜| 亚洲最快最全在线视频| 精品一区二区三区在线观看国产| 99久久久久久99| 日韩精品中文字幕在线一区| 亚洲免费av观看| 国产一区二区免费视频| 欧美系列一区二区| 国产亚洲欧美在线| 日韩av高清在线观看| 91一区在线观看| 久久综合国产精品| 石原莉奈在线亚洲三区| 91免费在线播放| 亚洲国产成人午夜在线一区| 日韩高清在线观看|