⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgpclutils.c

📁 pgp soucecode pgp soucecode
💻 C
字号:
/*____________________________________________________________________________
	Copyright (C) 1997 Network Associates Inc. and affiliated companies.
	All rights reserved.
	
	$Id: pgpCLUtils.c,v 1.2.16.1 1999/07/23 00:17:14 heller Exp $
____________________________________________________________________________*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "pgpKB.h"
#include "pgpCLUtils.h"

int
pgpCLGetPass (FILE *fp, char *buffer, int buflen)
{
	int i;
	
	fprintf (fp, "Enter pass phrase (type ^D to cancel): ");
	fflush (fp);
/*	i = pgpTtyGetString (buffer, buflen, ui->showpass ? ui->fp : NULL); */
	i = pgpCLGetString (buffer, buflen, NULL);
	fprintf (fp, "\n");
	fflush (fp);
	return i;
}

int
pgpCLGetString(char *buf, int len, FILE *echo)
{
	int c;
	int n = 0;
	
	kbCbreak(0);
	
	for (;;) {
		if (echo)
			fflush(echo);
		c = kbGet();
		
		if (c == '\r' || c == '\n') {
			c = '\n';
			break;
		} else if (c == '\b' || c == 7 || c == 127) {
			if (n > 0) {
				n--;
				if (echo)
					fputs("\b \b", echo);
			} else
				fputc('\a', echo ? echo : stderr);
		} else if (c == 0x04) {
			if (echo) {
				fputc('\n', echo);
				fflush(echo);
			}
			kbNorm();
			return -1;
		} else if (c == 0x15) {
			fputc('\r', stdout);
			n = 0;
		} else if (c < ' ' || c > 256) {
			fputc('\a', echo ? echo : stderr);
		} else if (n + 1 >= len) {
			fputc('\a', echo ? echo : stderr);
			kbFlush(0);
		} else {
			if (echo)
				fputc(c, echo);
			buf[n++] = (char)c;
		}
	}
	if (echo) {
		fputc('\n', echo);
		fflush(echo);
	}
	buf[n] = '\0';
	
	kbNorm();
	return n;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -