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

📄 ldclose.c

📁 speech signal process tools
💻 C
字号:
/** ldclose - close current object file.*		if current object file is an archive member,*		set up for next object file from archive.** #ifdef PORTAR		printable ascii headers archive version* #else #ifdef PORT5AR	UNIX 5.0 semi-portable archive version* #else			pre UNIX 5.0 (old) archive version* #endif*//* static char *sccs_id = "@(#)ldclose.c	1.2 12/8/89 ESI, ATT"; */#include <system.h>#include <stdio.h>#include <string.h>#include "ar.h"#include "filehdr.h"#include "ldfcn.h"#if	ANSI 	int vldldptr(LDFILE *);	void  freeldptr(LDFILE *);	long sgetl(char *);#else 	int vldldptr();	void  freeldptr();	long sgetl();#endif intldclose(ldptr)LDFILE *ldptr;{#ifdef PORTAR	struct ar_hdr arhdr;	long ar_size;	if (vldldptr(ldptr) == FAILURE)		return (SUCCESS);	if (TYPE(ldptr) == ARTYPE &&		FSEEK(ldptr, -((long)sizeof(arhdr)), BEGINNING) == OKFSEEK &&		FREAD((char *)&arhdr, sizeof(arhdr), 1, ldptr) == 1 &&		!strncmp(arhdr.ar_fmag, ARFMAG, sizeof(arhdr.ar_fmag)) &&		sscanf(arhdr.ar_size, "%ld", &ar_size) == 1)	{		/*		* Be sure OFFSET is even		*/		OFFSET(ldptr) += ar_size + sizeof(arhdr) + (ar_size & 01);		if (FSEEK(ldptr, 0L, BEGINNING) == OKFSEEK &&			FREAD((char *)&(HEADER(ldptr)), FILHSZ, 1, ldptr) == 1)		{			return (FAILURE);		}	}#else#ifdef PORT5AR	struct arf_hdr arhdr;	long ar_size, nsyms;	if (vldldptr(ldptr) == FAILURE)		return (SUCCESS);	if (TYPE(ldptr) == ARTYPE &&		FSEEK(ldptr, -((long)sizeof(arhdr)), BEGINNING) == OKFSEEK &&		FREAD((char *)&arhdr, sizeof(arhdr), 1, ldptr) == 1)	{		ar_size = sgetl(arhdr.arf_size);		/*		* Be sure offset is even		*/		OFFSET(ldptr) += ar_size + sizeof(arhdr) + (ar_size & 01);		if (FSEEK(ldptr, 0L, BEGINNING) == OKFSEEK &&			FREAD((char *)&(HEADER(ldptr)), FILHSZ, 1, ldptr) == 1)		{			return (FAILURE);		}	}#else	ARCHDR arhdr;	if (vldldptr(ldptr) == FAILURE)		return (SUCCESS);	if (TYPE(ldptr) == ARTYPE &&		FSEEK(ldptr, -((long)ARCHSZ), BEGINNING) == OKFSEEK &&		FREAD((char *)&arhdr, ARCHSZ, 1, ldptr) == 1)	{		/*		* Be sure OFFSET is even		*/		OFFSET(ldptr) += arhdr.ar_size + ARCHSZ + (arhdr.ar_size & 01);		if (FSEEK(ldptr, 0L, BEGINNING) == OKFSEEK &&			FREAD((char *)&(HEADER(ldptr)), FILHSZ, 1, ldptr) == 1)		{			return (FAILURE);		}	}#endif#endif	fclose(IOPTR(ldptr));	freeldptr(ldptr);	return (SUCCESS);}

⌨️ 快捷键说明

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