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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? oldprotocol.c++

?? fax相關(guān)的東西
?? C++
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    fflush(stdout);}/* * General job manipulation support. */#include <pwd.h>boolOldProtocolServer::_checkUser(const char* requestor, struct passwd* pwd){    char buf[1024];    char* cp;    buf[0] = '\0';    if (pwd->pw_gecos) {	if (pwd->pw_gecos[0] == '&') {	    strcpy(buf, pwd->pw_name);	    strcat(buf, pwd->pw_gecos+1);	    if (islower(buf[0]))		buf[0] = toupper(buf[0]);	} else	    strcpy(buf, pwd->pw_gecos);	if ((cp = strchr(buf,',')) != 0)	    *cp = '\0';	/* see FaxClient::setupUserIdentity; strip SysV junk */	if ((cp = strchr(buf,'(')) != 0)	    *cp = '\0';    } else	strcpy(buf, pwd->pw_name);    if (TRACE(PROTOCOL)) {	if (*buf)	     logDebug("%s user: \"%s\"", pwd->pw_name, buf);	else	     logDebug("name of %s user unknown", pwd->pw_name);    }    return (strcmp(requestor, buf) == 0);}boolOldProtocolServer::isAdmin(const char* requestor){    static bool checked = false;    static bool isadmin = false;    if (!checked) {	struct passwd* pwd = getpwuid(getuid());	if (!pwd) {	    logError("getpwuid failed for uid %d: %m", getuid());	    pwd = getpwuid(geteuid());	}	if (!pwd) {	    logError("getpwuid failed for effective uid %d: %m", geteuid());	    isadmin = false;	}	isadmin = _checkUser(requestor, pwd);	if (!isadmin) {					/* not fax user */	    pwd = getpwnam("root");	    if (!pwd) {		logError("getpwnam failed for \"root\": %m");		isadmin = false;	    } else		isadmin = _checkUser(requestor, pwd);	/* root user */	}	checked = true;    }    return (isadmin);}voidOldProtocolServer::applyToJob(const char* tag, const char* op,    void (OldProtocolServer::*f)(Job&, const char*)){    char* requestor = (char *) strchr(tag, ':');    if (!requestor)	protocolBotch("no requestor name for \"%s\" command.", op);    *requestor++ = '\0';    char* arg = strchr(requestor, ':');    if (arg)	*arg++ = '\0';    fxStr emsg;    Job* job = findJob(tag, emsg);    if (job) {	/*	 * Validate requestor is permitted to do op to the	 * requested job.  We permit the person that submitted	 * the job, the fax user, and root.  Using the GECOS	 * field in doing the comparison is a crock, but not	 * something to change now--leave it for a protocol	 * redesign.	 */	if (job->sender == requestor || isAdmin(requestor)) {	    if (TRACE(PROTOCOL))		logDebug("%s request by %s for %s", op, requestor, tag);	    (this->*f)(*job, arg);	} else	    sendClient("jobOwner", tag);    } else	sendClient("notQueued", tag);}voidOldProtocolServer::applyToJobGroup(const char* tag, const char* op,    void (OldProtocolServer::*f)(Job&, const char*)){    char* requestor = (char *) strchr(tag, ':');    if (!requestor)	protocolBotch("no requestor name for \"%s\" command.", op);    *requestor++ = '\0';    char* arg = strchr(requestor, ':');    if (arg)	*arg++ = '\0';    if (jobs.size() == 0)	readJobs();    u_int jobsDone = 0;    u_int jobsSkipped = 0;    for (JobDictIter iter(jobs); iter.notDone(); iter++) {	Job& job = *iter.value();	if (job.groupid != tag)	    continue;	/*	 * Validate requestor is permitted to do op to the	 * requested job.  We permit the person that submitted	 * the job, the fax user, and root.  Using the GECOS	 * field in doing the comparison is a crock, but not	 * something to change now--leave it for a protocol	 * redesign.	 */	if (job.sender == requestor || isAdmin(requestor)) {	    if (TRACE(PROTOCOL))		logDebug("%s request by %s for %s", op, requestor, tag);	    (this->*f)(job, arg);	    jobsDone++;	} else	    jobsSkipped++;    }    if (jobsDone == 0)	sendClient(jobsSkipped ? "jobOwner" : "notQueued", tag);}/* * Job parameter alteration support. */#define	DEFINE_Alter(param)						\void OldProtocolServer::alterJob##param(const char* tag)		\    { applyToJob(tag, "alter", &OldProtocolServer::reallyAlterJob##param); }\void OldProtocolServer::alterJobGroup##param(const char* tag)		\    { applyToJobGroup(tag, "alter", &OldProtocolServer::reallyAlterJob##param); }boolOldProtocolServer::alterSuspend(Job& job){    if (job.state == FaxRequest::state_active) {	sendClient("jobLocked", job.jobid);	// NB: maintain old semantics	return (false);    }    fxStr emsg;    if (!sendQueuerACK(emsg, "X%s", (const char*) job.jobid)) {	sendError("Unable to suspend job: %s", (const char*) emsg);	return (false);    }    return (true);}voidOldProtocolServer::alterResubmit(Job& job){    fxStr emsg;    const char* jobid = job.jobid;    if (updateJobOnDisk(job, emsg)) {		// update q file	if (sendQueuerACK(emsg, "S%s", jobid))	// resubmit job	    sendClient("altered", jobid);	else	    sendError("Could not resubmit job: %s", (const char*) emsg);    } else {	sendError("Could not update job state: %s", (const char*) emsg);	(void) sendQueuer(emsg, "S%s", jobid);    }}voidOldProtocolServer::reallyAlterJobTTS(Job& job, const char* spec){    time_t now = Sys::now();    time_t t = cvtTime(spec, localtime(&now), "time-to-send");    if (alterSuspend(job)) {	job.tts = t;	alterResubmit(job);    }}DEFINE_Alter(TTS)voidOldProtocolServer::reallyAlterJobKillTime(Job& job, const char* spec){    time_t now = Sys::now();    time_t t = cvtTime(spec, localtime(&now), "kill-time");    if (alterSuspend(job)) {	job.killtime = t;	alterResubmit(job);    }}DEFINE_Alter(KillTime)voidOldProtocolServer::reallyAlterJobModem(Job& job, const char* device){    if (alterSuspend(job)) {	job.modem = device;	alterResubmit(job);    }}DEFINE_Alter(Modem)voidOldProtocolServer::reallyAlterJobPriority(Job& job, const char* priority){    if (alterSuspend(job)) {	job.usrpri = atoi(priority);	alterResubmit(job);    }}DEFINE_Alter(Priority)voidOldProtocolServer::reallyAlterJobMaxDials(Job& job, const char* max){    if (alterSuspend(job)) {	job.maxdials = atoi(max);	alterResubmit(job);    }}DEFINE_Alter(MaxDials)voidOldProtocolServer::reallyAlterJobNotification(Job& job, const char* note){    if (alterSuspend(job)) {	job.checkNotifyValue(note);	alterResubmit(job);    }}DEFINE_Alter(Notification)/* * Job removal and aborting support. */voidOldProtocolServer::reallyRemoveJob(const char* op, Job& job){    /*     * First ask server to do removal.  If the job is being     * processed, it will first be aborted.  Otherwise, do     * the cleanup here.     */    fxStr emsg;    const char* cmd = (strcmp(op, "remove") == 0 ? "R" : "K");    if (sendQueuerACK(emsg, "%s%s", cmd, (const char*) job.jobid)) {	sendClient("removed", job.jobid);    } else if (lockJob(job, LOCK_EX|LOCK_NB, emsg)) {	for (u_int i = 0, n = job.items.length(); i < n; i++) {	    const FaxItem& fitem = job.items[i];	    switch (fitem.op) {	    case FaxRequest::send_tiff:	    case FaxRequest::send_tiff_saved:	    case FaxRequest::send_pdf:	    case FaxRequest::send_pdf_saved:	    case FaxRequest::send_postscript:	    case FaxRequest::send_postscript_saved:	    case FaxRequest::send_pcl:	    case FaxRequest::send_pcl_saved:		Sys::unlink(fitem.item);		break;	    case FaxRequest::send_fax:		if (job.isUnreferenced(i))		    Sys::unlink(fitem.item);		break;	    }	}	if (Sys::unlink(job.qfile) < 0) {	    logError("%s: unlink %s failed (%m)", op, (const char*) job.qfile);	    sendClient("unlinkFailed", job.jobid);	} else {	    logInfo("%s %s completed", 		strcmp(op, "remove") == 0 ? "REMOVE" : "KILL",		(const char*) job.jobid);	    sendClient("removed", job.jobid);	}	unlockJob(job);    }}voidOldProtocolServer::doremove(Job& job, const char*){    reallyRemoveJob("remove", job);}void OldProtocolServer::removeJob(const char* tag)    { applyToJob(tag, fxQUOTE(op), &OldProtocolServer::doremove); }void OldProtocolServer::removeJobGroup(const char* tag)    { applyToJobGroup(tag, fxQUOTE(op), &OldProtocolServer::doremove); }voidOldProtocolServer::dokill(Job& job, const char*){    reallyRemoveJob("kill", job);}void OldProtocolServer::killJob(const char* tag)    { applyToJob(tag, fxQUOTE(op), &OldProtocolServer::dokill); }void OldProtocolServer::killJobGroup(const char* tag)    { applyToJobGroup(tag, fxQUOTE(op), &OldProtocolServer::dokill); }/* * Job submission support. */static voidlower(char* cp){    while (*cp) {	if (isupper(*cp))	    *cp = tolower(*cp);	cp++;    }}voidOldProtocolServer::submitJob(const char*){    fxStr emsg;    curJob = &defJob;				// inherit from default    if (!newJob(emsg)) {	sendError("Can not create new job: %s.", (const char*) emsg);	dologout(1);    }    time_t t = Sys::now();    struct tm now = *localtime(&t);    Job& job = *curJob;    for (;;) {	char line[1024];	char* tag;	getCommandLine(line, tag);	if (isCmd("end") || isCmd(".")) {	    setupData();	    break;	}	lower(line);	u_int ix;	if (FaxRequest::isStrCmd(line, ix)) {	    if (isCmd("cover"))		coverProtocol(0, atoi(tag));	    else		job.*FaxRequest::strvals[ix].p = tag;	} else if (FaxRequest::isShortCmd(line, ix)) {	    job.*FaxRequest::shortvals[ix].p = atoi(tag);	} else if (isCmd("sendAt")) {	    job.tts = (time_t) cvtTime(tag, &now, "time-to-send");	} else if (isCmd("killtime")) {	    struct tm* tm;	    if (job.tts) {		// NB: assumes sendAt precedes killtime		t = job.tts;		tm = localtime(&t);	    } else		tm = &now;	    job.killtime = cvtTime(tag, tm, "kill-time");	} else if (isCmd("retrytime")) {	    job.retrytime = (time_t) atoi(tag);	} else if (isCmd("notify")) {	// email notification	    job.checkNotifyValue(tag);	} else if (isCmd("pagechop")) {	    job.checkChopValue(tag);	} else if (isCmd("chopthreshold")) {	    job.chopthreshold = atof(tag);	} else if (isCmd("zcover")) {	    coverProtocol(1, atoi(tag));	} else if (isCmd("page")) {	   job.items.append(FaxItem(FaxRequest::send_page, 0, "", tag));	} else if (isCmd("!page")) {	   job.items.append(FaxItem(FaxRequest::send_page_saved, 0, "", tag));	} else				// XXX discard unknown items	    logInfo("Unknown job item %s:%s", line, tag);    }    if (job.external == "")	job.external = job.number;    job.modem = modem;    if (!updateJobOnDisk(job, emsg))	sendError("%s", (const char*) emsg);    else {	setFileOwner(job.qfile);		// force ownership	FileCache::chmod(job.qfile, 0660);	// sync cache	if (sendQueuerACK(emsg, "S%s", (const char*) job.jobid))	    sendClient("job", version > 1 ? "%s:%s" : "%s",		(const char*) job.jobid, (const char*) job.groupid);	else	    sendError("Warning, no job scheduler appears to be running.");    }}voidOldProtocolServer::coverProtocol(int isLZW, int cc){    fxStr templ = fxStr::format(FAX_DOCDIR "/doc%s.cover",	(const char*) curJob->jobid);    FILE* fd = fopen(templ, "w");    if (fd == NULL)	sendAndLogError("Could not create cover sheet file %s.",	    (const char*) templ);    if (isLZW) {	/*	 * Cover sheet comes across as LZW-compressed data;	 * the version id is the count of the decompressed	 * data bytes to expect (sigh, what a hack!)	 */	setupLZW();	long total = decodeLZW(stdin, fd);	if (total != cc)	    protocolBotch("not enough data received: expected %u, got %u.",		cc, total);	if (TRACE(PROTOCOL))	    logDebug(templ | ": %ld-byte compressed %s",		cc, "PostScript document");    } else {	/*	 * Old-style, data comes across as	 * ascii terminated by "..".	 */	char line[1024];	char* tag;	for (;;) {	    getCommandLine(line, tag);	    if (isCmd(".."))		break;	    fprintf(fd, "%s\n", tag);	}    }    if (fflush(fd) != 0)	sendAndLogError("Error writing cover sheet data: %s.", strerror(errno));    fclose(fd);    curJob->items.append(	FaxItem(FaxRequest::send_postscript, 0, "", templ));}voidOldProtocolServer::setupData(void){    for (u_int i = 0, n = reqs.length(); i < n; i++) {	const FaxItem& fitem = reqs[i];	if (fitem.op != FaxRequest::send_poll) {	    const char* cp = strrchr(fitem.item, '/');	    if (!cp)				// relative name, e.g. doc123		cp = fitem.item;	    fxStr doc = fxStr::format("/" FAX_DOCDIR "%s.", cp) | curJob->jobid;	    if (Sys::link(fitem.item, doc) < 0) {		logError("Can not link document \"%s\": %s",		    (const char*) doc, strerror(errno));		sendError("Problem setting up document file: %s",		    strerror(errno));

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美腿丝袜亚洲综合| 91九色最新地址| 91精品国产aⅴ一区二区| 亚洲一级不卡视频| 欧美精品一二三四| 日韩二区在线观看| www成人在线观看| 在线免费观看日韩欧美| 亚洲成a人在线观看| 欧美一卡在线观看| 国产一区二区三区国产| 国产精品丝袜久久久久久app| 91小视频免费看| 亚洲成a人片综合在线| 欧美成人a∨高清免费观看| 国产精品一卡二卡| 亚洲欧美日韩系列| 宅男在线国产精品| 国产91精品久久久久久久网曝门| 有码一区二区三区| 日韩美女在线视频| 99riav一区二区三区| 日韩二区三区四区| 国产精品激情偷乱一区二区∴| 欧美日韩国产美| 国产精品 日产精品 欧美精品| 亚洲美女免费在线| 日韩午夜中文字幕| 91麻豆国产自产在线观看| 男女男精品视频| 亚洲色欲色欲www| 精品国精品自拍自在线| 99久久国产综合精品麻豆| 日本视频一区二区| 亚洲人一二三区| 久久夜色精品一区| 欧美色中文字幕| 成人中文字幕在线| 青青国产91久久久久久| 中文字幕制服丝袜成人av| 91精品国产91久久综合桃花| av亚洲精华国产精华| 国产在线视频精品一区| 日日摸夜夜添夜夜添亚洲女人| 国产精品美女一区二区| 欧美本精品男人aⅴ天堂| 色天天综合久久久久综合片| 国产成人亚洲精品狼色在线| 日韩成人伦理电影在线观看| 一区二区免费视频| 中文一区二区在线观看| 日韩午夜激情av| 在线观看国产91| 99热在这里有精品免费| 懂色av一区二区三区蜜臀| 日韩国产精品91| 亚洲一区在线视频| 亚洲天堂精品视频| 中文字幕一区二区三区在线观看| 久久婷婷一区二区三区| 日韩欧美国产高清| 日韩欧美中文一区二区| 欧美日韩亚洲丝袜制服| 91久久精品一区二区| 99在线精品视频| 成人黄色电影在线| 东方欧美亚洲色图在线| 国产激情视频一区二区在线观看| 久久成人久久爱| 成人中文字幕在线| 福利电影一区二区| 成人av片在线观看| 懂色av中文一区二区三区| 国产高清视频一区| 丁香亚洲综合激情啪啪综合| 国产福利91精品一区二区三区| 国产一区二区三区高清播放| 精品无码三级在线观看视频| 国产一区二区三区久久悠悠色av| 精品一区二区三区免费毛片爱| 久久国产精品免费| 国产乱码精品一区二区三区五月婷| 国内精品伊人久久久久av影院| 精品一区二区在线观看| 国产专区综合网| 成人在线视频一区| 97成人超碰视| 欧美蜜桃一区二区三区| 7777精品伊人久久久大香线蕉的| 欧美一区二区性放荡片| 2欧美一区二区三区在线观看视频| 久久久影院官网| 中文字幕亚洲在| 亚洲观看高清完整版在线观看| 欧美96一区二区免费视频| 国产精品一二三| 91污在线观看| 欧美浪妇xxxx高跟鞋交| 日韩美女天天操| 国产精品进线69影院| 亚洲国产sm捆绑调教视频| 六月丁香综合在线视频| 成人sese在线| 欧美在线观看一二区| 欧美一区二区大片| 国产精品女主播在线观看| 亚洲国产日日夜夜| 国产精品一色哟哟哟| 欧美制服丝袜第一页| 精品久久五月天| 1024成人网| 理论电影国产精品| 99riav久久精品riav| 欧美一激情一区二区三区| 中文字幕二三区不卡| 日韩专区中文字幕一区二区| 国产精品亚洲а∨天堂免在线| 在线观看www91| 国产亚洲女人久久久久毛片| 亚洲女性喷水在线观看一区| 免费成人在线网站| 国产不卡在线播放| 91精品国产综合久久福利| 国产精品成人网| 青青草97国产精品免费观看 | 在线观看国产91| 精品第一国产综合精品aⅴ| 亚洲欧美一区二区久久| 国模少妇一区二区三区| 欧美日韩激情在线| 国产精品久久久一本精品| 美国三级日本三级久久99| 97精品久久久午夜一区二区三区 | 国产精品18久久久久久久久久久久 | 婷婷丁香久久五月婷婷| 风间由美一区二区av101| 欧美一卡2卡3卡4卡| 亚洲精品高清在线| 岛国精品在线观看| 精品少妇一区二区三区在线播放| 一区二区三区四区激情| 成人免费毛片aaaaa**| 欧美大片一区二区| 亚洲国产aⅴ成人精品无吗| 不卡的电视剧免费网站有什么| 欧美一区二区三区公司| 亚洲一区欧美一区| 91麻豆文化传媒在线观看| 在线一区二区三区四区五区 | 日韩西西人体444www| 一区av在线播放| 不卡免费追剧大全电视剧网站| 国产三级精品在线| 精品一区二区三区香蕉蜜桃| 日韩午夜电影在线观看| 午夜精品成人在线视频| 欧美亚洲国产怡红院影院| 中文欧美字幕免费| 国产馆精品极品| 久久久国产精华| 国产精品资源网站| 久久久久国产精品人| 国产一区二区精品久久99| 精品久久人人做人人爰| 麻豆精品在线看| 日韩免费高清视频| 老司机精品视频在线| 欧美不卡一二三| 国产精品一品视频| 国产精品免费视频一区| 波多野结衣精品在线| 综合av第一页| 欧美在线观看禁18| 五月婷婷综合网| 3751色影院一区二区三区| 日本大胆欧美人术艺术动态| 91精品国产aⅴ一区二区| 看电视剧不卡顿的网站| 精品欧美乱码久久久久久1区2区| 国产乱码一区二区三区| 国产精品不卡一区二区三区| 色婷婷av一区二区| 天堂久久久久va久久久久| 欧美电视剧免费全集观看| 国产福利一区二区三区视频 | 日韩精品乱码av一区二区| 欧美电视剧在线观看完整版| 国产精品1区2区3区在线观看| 国产精品午夜电影| 95精品视频在线| 视频一区中文字幕| 欧美精品一区二区久久久| 成av人片一区二区| 亚洲国产精品久久一线不卡| 日韩免费视频一区| 粉嫩一区二区三区在线看| 亚洲欧洲日韩一区二区三区| 在线看不卡av| 精品一区二区久久久| 中文字幕一区二区不卡|