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

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

?? portable.c

?? 這是資料最全的有關(guān)匯編語(yǔ)言的示例源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#ifndef LINT
/* @(#) portable.c 2.24 88/08/24 01:22:06 */
static char sccsid[]="@(#) portable.c 2.24 88/08/24 01:22:06";
#endif /* LINT */

#include "options.h"
/*
Copyright (C) 1986, 1987 Rahul Dhesi -- All rights reserved
(C) Copyright 1988 Rahul Dhesi -- All rights reserved
*/
/**********************
portable.c contains functions needed to make Zoo portable to various
implementations of C.

Note:  Provided a 2's complement machine is used, all functions in
this file are themselves machine-independent and need not be changed
when implementing Zoo on a different machine.  Some code will choke
on 1's complement machines--I think.  

For machine-dependent declarations see files "machine.h" and "options.h". 

For machine-dependent functions see file "machine.c"
*/

#include "zoo.h"
#include "zooio.h"

#include "various.h"
#include "zoofns.h"

#include "machine.h"
#include "debug.h"
#include "assert.h"

#ifdef NEEDCTYP
#include <ctype.h>              /* for tolower() */
#endif

#include "portable.h"

#ifdef TRACE_IO
extern int verbose;
#endif

/* Functions defined for use within this file only.  */
long to_long PARMS((BYTE[]));
int to_int PARMS((BYTE[]));
void b_to_zooh PARMS((struct zoo_header *, BYTE[]));
void b_to_dir PARMS((struct direntry *, BYTE[]));
int dir_to_b PARMS((BYTE[], struct direntry *));
void zooh_to_b PARMS((BYTE[], struct zoo_header *));
void splitlong PARMS((BYTE[], long));
void splitint PARMS((BYTE[], int));

#ifdef TRACE_IO
void show_h PARMS ((struct zoo_header *));
void show_dir PARMS ((struct direntry *));
#endif /* TRACE_IO */

extern unsigned int crccode;

/************************************************************************/
/* I/O functions */
/************************************************************************/

/* some functions get defined only if they aren't already macros */

#ifndef zooread
int zooread (file, buffer, count)
ZOOFILE file; char *buffer; int count;
{ return (fread (buffer, 1, count, file)); }
#endif /* zooread */

#ifndef FIZ
#ifndef zoowrite
int zoowrite (file, buffer, count)
ZOOFILE file; char *buffer; int count;
{ 
	if (file == NULLFILE)
	   return (count);
	else
		return (fwrite (buffer, 1, count, file)); 
}
#endif /* zoowrite */

ZOOFILE zoocreate (fname)
char *fname;
{ return ((ZOOFILE) fopen (fname, Z_NEW)); }

#endif /* FIZ */

#ifndef zooseek
long zooseek (file, offset, whence)
ZOOFILE file; long offset; int whence;
{ return (fseek (file, offset, whence)); }
#endif /* zooseek */

ZOOFILE zooopen (fname, option)
char *fname; char *option;
{ return ((ZOOFILE) fopen (fname, option)); }

#ifndef zootell
long zootell (file)
ZOOFILE file;
{ return ftell (file); }
#endif /* zootell */

int zooclose (file)
ZOOFILE file;
{ return fclose (file); }

/**********************
low_ch() is a macro that returns a lowercased char; it may be
used with any char, whether or not it is uppercase.   It will
be used below by one or two functions.
*/

#define low_ch(c)		(isupper(c) ? tolower(c) : c)

/************************************************************************/
/*** Following are functions that make up for various implementations ***/
/*** of C not having certain library routines.                        ***/
/************************************************************************/

#ifndef FIZ
/**********************
str_lwr() converts a string to lowercase and returns a pointer to the string
*/
char *str_lwr (str)
char *str;
{
   register char *s;
   s = str;
   while (*s != '\0') {
      *s = toascii(*s);
		*s = low_ch(*s);
      s++;
   }
   return (str);
}

/**********************
str_icmp() compares strings just like strcmp() but it does it without regard to
case.
*/
int str_icmp (s1, s2)
register char *s1, *s2;
{
   for ( ; low_ch(*s1) == low_ch(*s2);  s1++, s2++)
      if (*s1 == '\0')
         return(0);
   return(low_ch(*s1) - low_ch(*s2));
}

#ifdef NEED_MEMSET
/**********************
memset() it sets the first "count" bytes of "dest" to the character
"c" and returns a pointer to "dest".
*/
VOIDPTR memset (dest, c, count)
register VOIDPTR dest;
int c;
unsigned count;
{
   register unsigned i;
   for (i = 0; i < count; i++) {
      *((char *) (dest + i)) = c;
   }
   return dest;
}
#endif /* NEED_MEMSET */

#ifdef NEED_MEMCPY
/**********************
memcpy() copies "count" bytes from "src" to "dest" and returns 
a pointer to "dest".  Not necessarily safe for overlapping moves. */

VOIDPTR memcpy(dest, src, count)
register VOIDPTR dest;
register VOIDPTR src;
unsigned count;
{
	VOIDPTR savedest = dest;
	while (count > 0) {
		*((char *) dest++) = *((char *) src++);
		count--;
	}
}
#endif /* NEED_MEMCPY */

#ifndef FPUTCHAR
/**********************
fputchar() writes a character to stdout.  It is identical to putchar
but is a function, not a macro.
*/
int fputchar (c)
int c;
{
   return (fputc(c, stdout));
}
#endif /* FPUTCHAR */
#endif /* FIZ */

/***********************************************************************/
/*** Following are declarations and functions that are written in a  ***/
/*** machine-independent way but they implement machine-dependent    ***/
/*** activities                                                      ***/
/***********************************************************************/

#ifndef DIRECT_CONVERT
/**********************
to_long() converts four consecutive bytes, in order of increasing
significance, to a long integer.  It is used to make Zoo independent of the
byte order of the system.  
*/
long to_long(data)
BYTE data[];
{
   return (long) ((unsigned long) data[0] | ((unsigned long) data[1] << 8) |
         ((unsigned long) data[2] << 16) | ((unsigned long) data[3] << 24));
}

#ifndef FIZ
/********************
splitlong() converts a long integer to four consecutive BYTEs in order
of increasing significance.
*/
void splitlong(bytes, bigword)
BYTE bytes[];
long bigword;
{
   int i;
   for (i = 0; i < 4; i++) {
      bytes[i] = bigword & 0xff;
      bigword = (unsigned long) bigword >> 8;
   }
}     
#endif /* FIZ */

/*******************
splitint() converts an integer to two consecutive BYTEs in order
of increasing significance.
*/
void splitint(bytes, word)
BYTE bytes[];
int word;
{
   bytes[0] = word & 0xff;
   word = (unsigned int) word >> 8;
   bytes[1] = word & 0xff;
}

/**********************
to_int() converts two consecutive bytes, in order of increasing
significance, to an integer, in a machine-independent manner
*/
int to_int(data)
BYTE data[];
{
   return (int) ((unsigned int) data[0] | ((unsigned int) data[1] << 8));
}

#else /* else of ifndef DIRECT_CONVERT */

long to_long(data)
BYTE data[];
{
   return ( * (long *) data );
}

#ifndef FIZ
/********************
splitlong() converts a long integer to four consecutive BYTEs in order
of increasing significance.
*/
void splitlong(bytes, bigword)
BYTE bytes[];
long bigword;
{
   * (long *) bytes = bigword;
}
#endif /* FIZ */

/*******************
splitint() converts an integer to two consecutive BYTEs in order
of increasing significance.
*/
void splitint(bytes, word)
BYTE bytes[];
int word;
{
   * (int *) bytes = word;
}

/**********************
to_int() converts two consecutive bytes, in order of increasing
significance, to an integer.
*/
int to_int(data)
BYTE data[];
{
   return (*(int *) data);
}

#endif /* ifndef DIRECT_CONVERT .. else ... */

#ifndef FIZ
/**********************
Function frd_zooh() reads the header of a Zoo archive in a machine-
independent manner, from a ZOOFILE.
*/
int frd_zooh(zoo_header, zoo_file)
struct zoo_header *zoo_header;
ZOOFILE zoo_file;
{
   int status;
   BYTE bytes[SIZ_ZOOH];         /* canonical header representation */
#ifdef TRACE_IO
   if (verbose) {
      printf("At file position [%8lx] ", ftell(zoo_file));
   }
#endif
   status = zooread (zoo_file, (char *) bytes, SIZ_ZOOH);
   b_to_zooh (zoo_header, bytes);   /* convert array to structure */
#ifdef TRACE_IO
   if (verbose) {
      printf("frd_zooh: reading\n");
      show_h(zoo_header);
   }
#endif
   if (status < MINZOOHSIZ)
      return (-1);
   else
      return (0);
}
#endif /* FIZ */

/**********************
Function frd_dir() reads a directory entry in a machine-independent manner,
from a ZOOFILE.
*/
int frd_dir(direntry, zoo_file) 
struct direntry *direntry; 
ZOOFILE zoo_file;
{
   int status;
   BYTE bytes[MAXDIRSIZE];    /* big enough to hold variable part too */

   /* To simplify things, we read the maximum possible size of the
   directory entry including the variable size and discard what is not
   needed */
#ifdef TRACE_IO
   if (verbose) {
      printf("At file position [%8lx] ", ftell(zoo_file));
   }
#endif
   status = zooread (zoo_file, (char *) bytes, MAXDIRSIZE);
   if (status < SIZ_DIR)
      return (-1);
   b_to_dir (direntry, bytes);
#ifdef TRACE_IO
   if (verbose) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜日本在线观看| 久久99久久99小草精品免视看| 日韩欧美国产一区二区在线播放| 成人免费看视频| 日韩va亚洲va欧美va久久| 国产精品国产三级国产a| 日韩情涩欧美日韩视频| 色94色欧美sute亚洲线路二| 国产精品99久久不卡二区| 午夜在线电影亚洲一区| 国产精品国产a| 久久久久国产免费免费 | 69久久夜色精品国产69蝌蚪网| 成人精品一区二区三区中文字幕 | 国产91精品久久久久久久网曝门| 日韩二区三区在线观看| 一区二区三区丝袜| 国产精品久久精品日日| 国产视频一区二区三区在线观看| 欧美大片在线观看一区二区| 欧美色视频一区| 一本一本大道香蕉久在线精品| 成人午夜电影久久影院| 国产盗摄精品一区二区三区在线| 毛片基地黄久久久久久天堂| 午夜精品福利一区二区蜜股av| 亚洲女同女同女同女同女同69| 国产精品不卡视频| 欧美国产丝袜视频| 国产欧美一区二区三区鸳鸯浴| 精品国精品自拍自在线| 日韩欧美国产麻豆| 日韩视频一区二区三区| 91精品国产免费久久综合| 欧美精品一二三| 欧美嫩在线观看| 69堂成人精品免费视频| 欧美一级二级三级蜜桃| 欧美大胆一级视频| 精品美女一区二区三区| 欧美大尺度电影在线| 久久综合成人精品亚洲另类欧美 | 美国av一区二区| 精品一区在线看| 国产盗摄精品一区二区三区在线| 国产精品538一区二区在线| 国产成人免费高清| 成人激情午夜影院| 色综合久久99| 欧美乱妇15p| 日韩精品一区二区三区蜜臀| 久久综合给合久久狠狠狠97色69| 欧美激情一区在线观看| 亚洲日本va在线观看| 亚洲一区在线观看视频| 日韩一区欧美二区| 韩国在线一区二区| 99精品国产91久久久久久| 欧美在线一区二区三区| 日韩欧美色综合网站| 国产欧美日韩另类一区| 亚洲精品日韩综合观看成人91| 天堂蜜桃一区二区三区| 国产在线精品一区二区三区不卡| 国产999精品久久久久久绿帽| 99re6这里只有精品视频在线观看| 91久久一区二区| 日韩一区二区三区电影在线观看| 久久久精品tv| 亚洲综合免费观看高清在线观看| 日本午夜精品一区二区三区电影| 国内精品国产成人国产三级粉色| 99久久精品情趣| 91精品国产色综合久久ai换脸| 国产视频一区二区在线| 亚洲一区二区在线观看视频| 国内成人免费视频| 在线观看成人免费视频| 2023国产精品自拍| 亚洲综合久久久| 国产激情视频一区二区三区欧美| 色先锋aa成人| 欧美va亚洲va香蕉在线| 亚洲欧美一区二区不卡| 日本成人在线网站| 99久久综合精品| 精品国产乱码久久| 一区二区三区精品久久久| 国精产品一区一区三区mba桃花 | 免播放器亚洲一区| 成人18视频日本| 精品免费视频.| 亚洲va在线va天堂| 国产成人精品免费视频网站| 欧美日韩一区二区欧美激情| 国产精品久久毛片av大全日韩| 毛片一区二区三区| 欧美日韩另类国产亚洲欧美一级| 国产亚洲短视频| 免费三级欧美电影| 欧美在线免费观看视频| 亚洲国产精品国自产拍av| 蜜臀久久99精品久久久久久9 | 5月丁香婷婷综合| 最新不卡av在线| 国产精华液一区二区三区| 91精品国产全国免费观看| 夜夜嗨av一区二区三区网页 | 国产人成亚洲第一网站在线播放 | 欧美大度的电影原声| 亚洲风情在线资源站| 91视频91自| 亚洲国产成人一区二区三区| 国内精品国产成人国产三级粉色 | 日韩视频免费直播| 午夜成人免费视频| 欧洲一区二区三区在线| 日韩美女啊v在线免费观看| 国产成人综合亚洲91猫咪| 精品国产乱码久久久久久牛牛| 天天综合色天天综合| 欧美撒尿777hd撒尿| 一区二区三区四区不卡在线| 97精品国产97久久久久久久久久久久 | 美女在线视频一区| 欧美精品一卡二卡| 五月婷婷久久综合| 欧美日韩不卡一区| 丝袜亚洲精品中文字幕一区| 欧美唯美清纯偷拍| 亚洲国产精品一区二区久久恐怖片 | 日韩无一区二区| 久久99精品久久久久久久久久久久 | 在线看国产一区二区| 亚洲欧美激情小说另类| 91蜜桃免费观看视频| 综合激情网...| 91麻豆视频网站| 一区二区三区四区国产精品| 在线观看www91| 午夜视频久久久久久| 欧美日韩亚洲综合在线| 日韩福利视频导航| 精品国产区一区| 粉嫩欧美一区二区三区高清影视 | 精品奇米国产一区二区三区| 国产一区二区三区免费播放 | 一区二区欧美国产| 欧美日韩国产精选| 久久97超碰国产精品超碰| 久久久99精品久久| 不卡av在线网| 亚洲一区二区精品3399| 日韩一区二区三区在线视频| 精品在线播放午夜| 中文字幕日本乱码精品影院| 91麻豆视频网站| 人人爽香蕉精品| 国产亚洲1区2区3区| 色综合久久66| 日韩不卡手机在线v区| 国产日韩欧美一区二区三区乱码| 99久久精品一区| 日韩高清在线电影| 中文字幕欧美日韩一区| 欧美性感一区二区三区| 蜜臀精品久久久久久蜜臀 | 欧美电视剧在线看免费| 成人性色生活片免费看爆迷你毛片| 亚洲视频免费在线观看| 69成人精品免费视频| 国产宾馆实践打屁股91| 亚洲资源在线观看| 久久久777精品电影网影网| 色婷婷综合视频在线观看| 免费成人深夜小野草| 国产精品久久久久久久久免费丝袜 | 91麻豆免费观看| 日本三级韩国三级欧美三级| 国产欧美中文在线| 欧美精品一卡二卡| 豆国产96在线|亚洲| 日本不卡一二三区黄网| 综合久久久久久久| 欧美精品一区二区三区久久久| 97精品超碰一区二区三区| 看国产成人h片视频| 亚洲精品免费播放| 精品电影一区二区三区| 欧美在线视频不卡| 国产精品一卡二| 日韩国产欧美在线播放| 亚洲三级电影网站| 久久久99久久| 日韩一区二区高清| 在线观看91视频| 99久久综合色| 成人午夜视频在线| 久久66热偷产精品| 日韩av一区二|