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

📄 randomword.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 5 页
字号:
#ifndef lintstatic  char    *sccsid = "@(#)randomword.c	4.1  (ULTRIX)        7/17/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1988 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//* *	This code is derived from government supplied code. * *	15 August, 1989 - dws * *		Fixed bug in makeseed() usage. * *	7 June, 1989 - D. Long * *		randomword (word, hyphenated_word, min, max, limit) */#include <stdio.h>#include <sys/types.h>#include <pwd.h>#define TRUE				1#define FALSE				0#define RULE_SIZE			(sizeof(rules)/sizeof(struct unit))#define ALLOWED(flag)			(digram[units_in_syllable[current_unit - 1]][unit] & (flag))#define MAX_RETRIES			(4 * (int) length + RULE_SIZE)#define NOT_BEGIN_SYLLABLE		010#define NO_FINAL_SPLIT			04#define VOWEL				02#define ALTERNATE_VOWEL			01#define NO_SPECIAL_RULE			0#define BEGIN				0200#define NOT_BEGIN			0100#define BREAK				040#define PREFIX				020#define ILLEGAL_PAIR			010#define SUFFIX				04#define END				02#define NOT_END				01#define ANY_COMBINATION			0#define	WORDS	"/usr/dict/hlista"#define SHIFT	5#define TABSIZE (int)(400000/(1<<SHIFT))#define	NP	(sizeof(p)/sizeof(p[0]))#define	NW	30#define get(h)	(tab[h>>SHIFT]&(1<<((int)h&((1<<SHIFT)-1))))#define set(h)	tab[h>>SHIFT] |= 1<<((int)h&((1<<SHIFT)-1))typedef short int   boolean;boolean lookup ();boolean have_initial_y ();boolean have_final_split ();char   *get_syllable ();unsigned short int  random_unit ();unsigned short int  get_random ();char   *calloc ();char   *strcpy ();char   *strcat ();time_t time ();struct passwd  *getpwnam ();struct unit{    char    unit_code[5];    unsigned short int  flags;};static struct unit  rules[] ={    "a", VOWEL,    "b", NO_SPECIAL_RULE,    "c", NO_SPECIAL_RULE,    "d", NO_SPECIAL_RULE,    "e", NO_FINAL_SPLIT | VOWEL,    "f", NO_SPECIAL_RULE,    "g", NO_SPECIAL_RULE,    "h", NO_SPECIAL_RULE,    "i", VOWEL,    "j", NO_SPECIAL_RULE,    "k", NO_SPECIAL_RULE,    "l", NO_SPECIAL_RULE,    "m", NO_SPECIAL_RULE,    "n", NO_SPECIAL_RULE,    "o", VOWEL,    "p", NO_SPECIAL_RULE,    "r", NO_SPECIAL_RULE,    "s", NO_SPECIAL_RULE,    "t", NO_SPECIAL_RULE,    "u", VOWEL,    "v", NO_SPECIAL_RULE,    "w", NO_SPECIAL_RULE,    "x", NOT_BEGIN_SYLLABLE,    "y", ALTERNATE_VOWEL | VOWEL,    "z", NO_SPECIAL_RULE,    "ch", NO_SPECIAL_RULE,    "gh", NO_SPECIAL_RULE,    "ph", NO_SPECIAL_RULE,    "rh", NO_SPECIAL_RULE,    "sh", NO_SPECIAL_RULE,    "th", NO_SPECIAL_RULE,    "wh", NO_SPECIAL_RULE,    "qu", NO_SPECIAL_RULE,    "ck", NOT_BEGIN_SYLLABLE};static int  digram[][RULE_SIZE] ={     /* aa */ ILLEGAL_PAIR,     /* ab */ ANY_COMBINATION,     /* ac */ ANY_COMBINATION,     /* ad */ ANY_COMBINATION,     /* ae */ ILLEGAL_PAIR,     /* af */ ANY_COMBINATION,     /* ag */ ANY_COMBINATION,     /* ah */ NOT_BEGIN | BREAK | NOT_END,     /* ai */ ANY_COMBINATION,     /* aj */ ANY_COMBINATION,     /* ak */ ANY_COMBINATION,     /* al */ ANY_COMBINATION,     /* am */ ANY_COMBINATION,     /* an */ ANY_COMBINATION,     /* ao */ ILLEGAL_PAIR,     /* ap */ ANY_COMBINATION,     /* ar */ ANY_COMBINATION,     /* as */ ANY_COMBINATION,     /* at */ ANY_COMBINATION,     /* au */ ANY_COMBINATION,     /* av */ ANY_COMBINATION,     /* aw */ ANY_COMBINATION,     /* ax */ ANY_COMBINATION,     /* ay */ ANY_COMBINATION,     /* az */ ANY_COMBINATION,     /* ach */ ANY_COMBINATION,     /* agh */ ILLEGAL_PAIR,     /* aph */ ANY_COMBINATION,     /* arh */ ILLEGAL_PAIR,     /* ash */ ANY_COMBINATION,     /* ath */ ANY_COMBINATION,     /* awh */ ILLEGAL_PAIR,     /* aqu */ BREAK | NOT_END,     /* ack */ ANY_COMBINATION,     /* ba */ ANY_COMBINATION,     /* bb */ NOT_BEGIN | BREAK | NOT_END,     /* bc */ NOT_BEGIN | BREAK | NOT_END,     /* bd */ NOT_BEGIN | BREAK | NOT_END,     /* be */ ANY_COMBINATION,     /* bf */ NOT_BEGIN | BREAK | NOT_END,     /* bg */ NOT_BEGIN | BREAK | NOT_END,     /* bh */ NOT_BEGIN | BREAK | NOT_END,     /* bi */ ANY_COMBINATION,     /* bj */ NOT_BEGIN | BREAK | NOT_END,     /* bk */ NOT_BEGIN | BREAK | NOT_END,     /* bl */ BEGIN | SUFFIX | NOT_END,     /* bm */ NOT_BEGIN | BREAK | NOT_END,     /* bn */ NOT_BEGIN | BREAK | NOT_END,     /* bo */ ANY_COMBINATION,     /* bp */ NOT_BEGIN | BREAK | NOT_END,     /* br */ BEGIN | END,     /* bs */ NOT_BEGIN,     /* bt */ NOT_BEGIN | BREAK | NOT_END,     /* bu */ ANY_COMBINATION,     /* bv */ NOT_BEGIN | BREAK | NOT_END,     /* bw */ NOT_BEGIN | BREAK | NOT_END,     /* bx */ ILLEGAL_PAIR,     /* by */ ANY_COMBINATION,     /* bz */ NOT_BEGIN | BREAK | NOT_END,     /* bch */ NOT_BEGIN | BREAK | NOT_END,     /* bgh */ ILLEGAL_PAIR,     /* bph */ NOT_BEGIN | BREAK | NOT_END,     /* brh */ ILLEGAL_PAIR,     /* bsh */ NOT_BEGIN | BREAK | NOT_END,     /* bth */ NOT_BEGIN | BREAK | NOT_END,     /* bwh */ ILLEGAL_PAIR,     /* bqu */ NOT_BEGIN | BREAK | NOT_END,     /* bck */ ILLEGAL_PAIR,     /* ca */ ANY_COMBINATION,     /* cb */ NOT_BEGIN | BREAK | NOT_END,     /* cc */ NOT_BEGIN | BREAK | NOT_END,     /* cd */ NOT_BEGIN | BREAK | NOT_END,     /* ce */ ANY_COMBINATION,     /* cf */ NOT_BEGIN | BREAK | NOT_END,     /* cg */ NOT_BEGIN | BREAK | NOT_END,     /* ch */ NOT_BEGIN | BREAK | NOT_END,     /* ci */ ANY_COMBINATION,     /* cj */ NOT_BEGIN | BREAK | NOT_END,     /* ck */ NOT_BEGIN | BREAK | NOT_END,     /* cl */ SUFFIX | NOT_END,     /* cm */ NOT_BEGIN | BREAK | NOT_END,     /* cn */ NOT_BEGIN | BREAK | NOT_END,     /* co */ ANY_COMBINATION,     /* cp */ NOT_BEGIN | BREAK | NOT_END,     /* cr */ NOT_END,     /* cs */ NOT_BEGIN | END,     /* ct */ NOT_BEGIN | PREFIX,     /* cu */ ANY_COMBINATION,     /* cv */ NOT_BEGIN | BREAK | NOT_END,     /* cw */ NOT_BEGIN | BREAK | NOT_END,     /* cx */ ILLEGAL_PAIR,     /* cy */ ANY_COMBINATION,     /* cz */ NOT_BEGIN | BREAK | NOT_END,     /* cch */ ILLEGAL_PAIR,     /* cgh */ ILLEGAL_PAIR,     /* cph */ NOT_BEGIN | BREAK | NOT_END,     /* crh */ ILLEGAL_PAIR,     /* csh */ NOT_BEGIN | BREAK | NOT_END,     /* cth */ NOT_BEGIN | BREAK | NOT_END,     /* cwh */ ILLEGAL_PAIR,     /* cqu */ NOT_BEGIN | SUFFIX | NOT_END,     /* cck */ ILLEGAL_PAIR,     /* da */ ANY_COMBINATION,     /* db */ NOT_BEGIN | BREAK | NOT_END,     /* dc */ NOT_BEGIN | BREAK | NOT_END,     /* dd */ NOT_BEGIN,     /* de */ ANY_COMBINATION,     /* df */ NOT_BEGIN | BREAK | NOT_END,     /* dg */ NOT_BEGIN | BREAK | NOT_END,     /* dh */ NOT_BEGIN | BREAK | NOT_END,     /* di */ ANY_COMBINATION,     /* dj */ NOT_BEGIN | BREAK | NOT_END,     /* dk */ NOT_BEGIN | BREAK | NOT_END,     /* dl */ NOT_BEGIN | BREAK | NOT_END,     /* dm */ NOT_BEGIN | BREAK | NOT_END,     /* dn */ NOT_BEGIN | BREAK | NOT_END,     /* do */ ANY_COMBINATION,     /* dp */ NOT_BEGIN | BREAK | NOT_END,     /* dr */ BEGIN | NOT_END,     /* ds */ NOT_BEGIN | END,     /* dt */ NOT_BEGIN | BREAK | NOT_END,     /* du */ ANY_COMBINATION,     /* dv */ NOT_BEGIN | BREAK | NOT_END,     /* dw */ NOT_BEGIN | BREAK | NOT_END,     /* dx */ ILLEGAL_PAIR,     /* dy */ ANY_COMBINATION,     /* dz */ NOT_BEGIN | BREAK | NOT_END,     /* dch */ NOT_BEGIN | BREAK | NOT_END,     /* dgh */ NOT_BEGIN | BREAK | NOT_END,     /* dph */ NOT_BEGIN | BREAK | NOT_END,     /* drh */ ILLEGAL_PAIR,     /* dsh */ NOT_BEGIN | NOT_END,     /* dth */ NOT_BEGIN | PREFIX,     /* dwh */ ILLEGAL_PAIR,     /* dqu */ NOT_BEGIN | BREAK | NOT_END,     /* dck */ ILLEGAL_PAIR,     /* ea */ ANY_COMBINATION,     /* eb */ ANY_COMBINATION,     /* ec */ ANY_COMBINATION,     /* ed */ ANY_COMBINATION,     /* ee */ ANY_COMBINATION,     /* ef */ ANY_COMBINATION,     /* eg */ ANY_COMBINATION,     /* eh */ NOT_BEGIN | BREAK | NOT_END,     /* ei */ NOT_END,     /* ej */ ANY_COMBINATION,     /* ek */ ANY_COMBINATION,     /* el */ ANY_COMBINATION,     /* em */ ANY_COMBINATION,     /* en */ ANY_COMBINATION,     /* eo */ BREAK,     /* ep */ ANY_COMBINATION,     /* er */ ANY_COMBINATION,     /* es */ ANY_COMBINATION,     /* et */ ANY_COMBINATION,     /* eu */ ANY_COMBINATION,     /* ev */ ANY_COMBINATION,     /* ew */ ANY_COMBINATION,     /* ex */ ANY_COMBINATION,     /* ey */ ANY_COMBINATION,     /* ez */ ANY_COMBINATION,     /* ech */ ANY_COMBINATION,     /* egh */ NOT_BEGIN | BREAK | NOT_END,     /* eph */ ANY_COMBINATION,     /* erh */ ILLEGAL_PAIR,     /* esh */ ANY_COMBINATION,     /* eth */ ANY_COMBINATION,     /* ewh */ ILLEGAL_PAIR,     /* equ */ BREAK | NOT_END,     /* eck */ ANY_COMBINATION,     /* fa */ ANY_COMBINATION,     /* fb */ NOT_BEGIN | BREAK | NOT_END,     /* fc */ NOT_BEGIN | BREAK | NOT_END,     /* fd */ NOT_BEGIN | BREAK | NOT_END,     /* fe */ ANY_COMBINATION,     /* ff */ NOT_BEGIN,     /* fg */ NOT_BEGIN | BREAK | NOT_END,     /* fh */ NOT_BEGIN | BREAK | NOT_END,     /* fi */ ANY_COMBINATION,     /* fj */ NOT_BEGIN | BREAK | NOT_END,     /* fk */ NOT_BEGIN | BREAK | NOT_END,     /* fl */ BEGIN | SUFFIX | NOT_END,     /* fm */ NOT_BEGIN | BREAK | NOT_END,     /* fn */ NOT_BEGIN | BREAK | NOT_END,     /* fo */ ANY_COMBINATION,     /* fp */ NOT_BEGIN | BREAK | NOT_END,     /* fr */ BEGIN | NOT_END,     /* fs */ NOT_BEGIN,     /* ft */ NOT_BEGIN,     /* fu */ ANY_COMBINATION,     /* fv */ NOT_BEGIN | BREAK | NOT_END,     /* fw */ NOT_BEGIN | BREAK | NOT_END,     /* fx */ ILLEGAL_PAIR,     /* fy */ NOT_BEGIN,     /* fz */ NOT_BEGIN | BREAK | NOT_END,     /* fch */ NOT_BEGIN | BREAK | NOT_END,     /* fgh */ NOT_BEGIN | BREAK | NOT_END,     /* fph */ NOT_BEGIN | BREAK | NOT_END,     /* frh */ ILLEGAL_PAIR,     /* fsh */ NOT_BEGIN | BREAK | NOT_END,     /* fth */ NOT_BEGIN | BREAK | NOT_END,     /* fwh */ ILLEGAL_PAIR,     /* fqu */ NOT_BEGIN | BREAK | NOT_END,     /* fck */ ILLEGAL_PAIR,     /* ga */ ANY_COMBINATION,     /* gb */ NOT_BEGIN | BREAK | NOT_END,     /* gc */ NOT_BEGIN | BREAK | NOT_END,     /* gd */ NOT_BEGIN | BREAK | NOT_END,     /* ge */ ANY_COMBINATION,     /* gf */ NOT_BEGIN | BREAK | NOT_END,     /* gg */ NOT_BEGIN,     /* gh */ NOT_BEGIN | BREAK | NOT_END,     /* gi */ ANY_COMBINATION,     /* gj */ NOT_BEGIN | BREAK | NOT_END,     /* gk */ ILLEGAL_PAIR,     /* gl */ BEGIN | SUFFIX | NOT_END,     /* gm */ NOT_BEGIN | BREAK | NOT_END,     /* gn */ NOT_BEGIN | BREAK | NOT_END,     /* go */ ANY_COMBINATION,     /* gp */ NOT_BEGIN | BREAK | NOT_END,     /* gr */ BEGIN | NOT_END,     /* gs */ NOT_BEGIN | END,     /* gt */ NOT_BEGIN | BREAK | NOT_END,     /* gu */ ANY_COMBINATION,     /* gv */ NOT_BEGIN | BREAK | NOT_END,     /* gw */ NOT_BEGIN | BREAK | NOT_END,     /* gx */ ILLEGAL_PAIR,     /* gy */ NOT_BEGIN,     /* gz */ NOT_BEGIN | BREAK | NOT_END,     /* gch */ NOT_BEGIN | BREAK | NOT_END,     /* ggh */ ILLEGAL_PAIR,     /* gph */ NOT_BEGIN | BREAK | NOT_END,     /* grh */ ILLEGAL_PAIR,     /* gsh */ NOT_BEGIN,     /* gth */ NOT_BEGIN,     /* gwh */ ILLEGAL_PAIR,     /* gqu */ NOT_BEGIN | BREAK | NOT_END,     /* gck */ ILLEGAL_PAIR,     /* ha */ ANY_COMBINATION,     /* hb */ NOT_BEGIN | BREAK | NOT_END,     /* hc */ NOT_BEGIN | BREAK | NOT_END,     /* hd */ NOT_BEGIN | BREAK | NOT_END,     /* he */ ANY_COMBINATION,     /* hf */ NOT_BEGIN | BREAK | NOT_END,     /* hg */ NOT_BEGIN | BREAK | NOT_END,     /* hh */ ILLEGAL_PAIR,     /* hi */ ANY_COMBINATION,     /* hj */ NOT_BEGIN | BREAK | NOT_END,     /* hk */ NOT_BEGIN | BREAK | NOT_END,     /* hl */ NOT_BEGIN | BREAK | NOT_END,     /* hm */ NOT_BEGIN | BREAK | NOT_END,     /* hn */ NOT_BEGIN | BREAK | NOT_END,     /* ho */ ANY_COMBINATION,     /* hp */ NOT_BEGIN | BREAK | NOT_END,     /* hr */ NOT_BEGIN | BREAK | NOT_END,     /* hs */ NOT_BEGIN | BREAK | NOT_END,     /* ht */ NOT_BEGIN | BREAK | NOT_END,     /* hu */ ANY_COMBINATION,     /* hv */ NOT_BEGIN | BREAK | NOT_END,     /* hw */ NOT_BEGIN | BREAK | NOT_END,     /* hx */ ILLEGAL_PAIR,

⌨️ 快捷键说明

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