*/
Want to see what people are talking about? See the latest forum posts.
*/

View \GIO.C

LPC-PARCOR-CEPSTRUM Generator for C Programmers version 0.5b

Submitted By: Unknown
Rating: (Not rated) (Rate It)


#include <stdio.h>
#include "gio.h"


GIO * greopen( type, name, arg, gp )
int type;
char *name;
char *arg;
GIO *gp;
{
        gclose(gp);
        gp = gopen( type, name, arg );
}

GIO * gopen( type, name, arg )
int type;
char *name;
char *arg;
{
        GIO     *gp;

        if ((gp = (GIO *)malloc(sizeof(GIO))) == NULL)
                return (NULL);

        switch (type)
                {
                case GIO_STDIN:
                gp->iotype = GIO_FILE;
                gp->fp = stdin;
                gp->stdio = 1;
                break;

                case GIO_STDOUT:
                gp->iotype = GIO_FILE;
                gp->fp = stdout;
                gp->stdio = 1;
                break;

                case GIO_STDERR:
                gp->iotype = GIO_FILE;
                gp->fp = stderr;
                gp->stdio = 1;
                break;
       
                case GIO_FILE:
                gp->iotype = GIO_FILE;
                gp->stdio = 0;
                if ((gp->fp = fopen(name, arg)) == NULL)
                        return (NULL);
                break;

                case GIO_MSGQ:
                return (NULL);
                break;

                default:
                return (NULL);
                break;
                }
       
        return (gp);   
}

int gclose( gp )
GIO *gp;
{
        if (gp == NULL) return;
        switch (gp->iotype)
                {
                case GIO_FILE:
                if (!(gp->stdio))
                        fclose(gp->fp);
                break;

                case GIO_MSGQ:
                break;

                default:
                return (NULL);
                }

        free(gp);
        return (1);
}

int geof( gp )
GIO *gp;
{
        switch (gp->iotype)
                {
                case GIO_FILE:
                return (feof(gp->fp));

                case GIO_MSGQ:
                return (1);
                break;

                default:
                return (1);
                }
}

int gputs( s, gp )
char *s;
GIO *gp;
{
        if (gp == NULL) return;
        switch (gp->iotype)
                {
                case GIO_FILE:
                return (fputs( s, gp->fp ));

                case GIO_MSGQ:
                break;

                default:
                return (-1);
                }
}

int gread( buf, size, n, gp )
char *buf;
int size;
int n;
GIO *gp;
{
        switch (gp->iotype)
                {
                case GIO_FILE:
                return (fread(buf, size, n, gp->fp));

                case GIO_MSGQ:
                break;

                default:
                return (0);
                }
}

corner
© 1996-2008 CommunityHeaven LLC. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
North American business development: Nicolai Wadstrom. Publisher: Lars Hagelin.