Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.ecn.uoknor.edu!paladin.american.edu!europa.chnt.gtegsc.com!news.kreonet.re.kr!usenet.kornet.nm.kr!agate!howland.reston.ans.net!nntp.coast.net!news.kei.com!newsstand.cit.cornell.edu!newsfeed.cit.cornell.edu!newstand.syr.edu!news.corpcomm.net!newspeak.ultratech.net!worldlinx.com!news.hcl.com!bsd!patrick
From: patrick@bsd.hcl.com (Patrick Wong)
Newsgroups: comp.unix.bsd.386bsd.misc
Subject: Problems including <sys/tape.h>
Date: 6 Dec 1995 04:58:39 GMT
Organization: Hummingbird Communications Ltd.
Lines: 73
Message-ID: <4a37tv$8rq@mailhub.hcl.com>
NNTP-Posting-Host: bsdoutside.hcl.com
X-Newsreader: TIN [version 1.2 PL2]
I have problems include the c header <sys/tape.h> in a simple C program.
Below is the problems I get. Does anyone have any ideas:
bsd:patrick $ gcc hello.c
In file included from hello.c:2:
/usr/include/sys/tape.h:13: field `tp_dev' has incomplete type
/usr/include/sys/tape.h:15: syntax error before `u_long'
/usr/include/sys/tape.h:22: warning: `struct buf' declared inside parameter list
/usr/include/sys/tape.h:22: warning: its scope is only this definition or declar
ation,
/usr/include/sys/tape.h:22: warning: which is probably not what you want.
bsd:patrick $ cat hello.c
#include <stdio.h>
#include <sys/tape.h>
main()
{
printf ("hello,world\n");
}
bsd:patrick $ cat /usr/include/sys/tape.h
/*-
* Copyright (c) 1992 Berkeley Software Design, Inc. All rights reserved.
* The Berkeley Software Design Inc. software License Agreement specifies
* the terms and conditions for redistribution.
*
* BSDI $Id: tape.h,v 1.5 1992/09/22 20:01:26 karels Exp $
*/
/*
* Common definitions for tape devices.
*/
struct tpdevice {
struct device tp_dev;
struct tpdriver *tp_driver;
u_long tp_reclen;
u_long tp_fileno;
u_short tp_flags;
tpr_t tp_ctty;
};
struct tpdriver {
void (*t_strategy) __P((struct buf *));
#ifdef notyet
int (*t_open) __P((dev_t, int, int, struct proc *));
int (*t_close) __P((dev_t, int, int, struct proc *));
int (*t_ioctl) __P((dev_t, int, caddr_t, int, struct proc *));
int (*t_dump) __P((int));
#endif
};
/*
* Flags
*/
#define TP_OPEN 0x0001 /* block multiple opens */
#define TP_MOVED 0x0002 /* we're past BOT */
#define TP_WRITING 0x0004 /* do we need to write filemarks on close? */
#define TP_STREAMER 0x0008 /* use fixed length records */
#define TP_DOUBLEEOF 0x0010 /* write two filemarks at end of tape */
#define TP_SHORTEOF 0x0020 /* use 'short' filemarks (exabyte) */
#define TP_SEENEOF 0x0040 /* report EOF on the next read */
#define TP_8MMVIDEO 0x0080 /* special handling for 8mm videotapes */
#define TP_NODENS 0x0100 /* drive with no density selection */
#define TP_PHYS_ADDR 0x0200 /* drive can retrieve physical block address */
#define tpunit(dev) ((dev) & 0x3)
#define tpnorew(dev) ((dev) & 0x4)
bsd:patrick $