/* > utils.c

 * SJ Middleton, 1992

 * various little routines needed by the armovie library module.

 */

#include "kernel.h"
#include "msgs.h"
#include "os.h"
#include "swis.h"
#include "werr.h"

#include <ctype.h>
#include <stdlib.h>
#include <string.h>

#include "utils.h"

/* ---------------------------------------------------------------------------- */

#define OSFile_ReadNoPath   17
#define objecttype_File     1

int file_size(const char *s, int *filetype)
{
    _kernel_osfile_block f;

    if (_kernel_osfile(OSFile_ReadNoPath, s, &f) == objecttype_File)
    {
        if (filetype)
            *filetype = (f.load & 0xfff00000) == 0xfff00000 ? (f.load & 0x000fff00) >> 8 : -1;
        return f.start;
    }

    return -1;
}

/* ---------------------------------------------------------------------------- */

char *strdup(const char *s)
{
    char *s1 = NULL;
    if (s)
    {
        s1 = malloc(strlen(s) + 1);
        if (s1)
            strcpy(s1, s);
    }
    return s1;
}

char *strupr(char *s1)
{
    if (s1)
    {
        char *s = s1;
        int c;
        while ((c = *s) != '\0')
            *s++ = toupper(c);
    }
    return s1;
}

/* ---------------------------------------------------------------------------- */

os_error *file_readlinebuffer(filehandle f, char *buffer, int bufsize)
{
    os_error *e;
    int i = 0, byte;
    do
    {
        e = file_bget(f, &byte);
        buffer[i++] = byte;
    }
    while (e == NULL && byte != '\n' && byte != -1 && i < bufsize);
    buffer[--i] = '\0';
    return e;
}


/* eof utils.c */
