src/shared/util.c
author Tero Marttila <terom@fixme.fi>
Wed, 06 Jan 2010 16:05:02 +0200
changeset 33 0ed40e11b0e8
parent 17 baf3fe7c6354
permissions -rw-r--r--
don't use pthread_cancel to shutdown threads, it doesn't work...
#include "util.h"

#include <string.h>
#include <errno.h>

int chfext (char *buf, size_t len, const char *newext)
{
    char *ext;

    // find .ext
    if ((ext = strrchr(buf, '.')) == NULL) {
        errno = EINVAL;
        return -1;
    }

    // check length
    if (ext + strlen(newext) >= buf + len) {
        errno = ENAMETOOLONG;
        return -1;
    }

    // change to .foo
    strcpy(ext, newext);
    
    // ok
    return 0;
}

int path_with_fext (const char *path, char *buf, size_t len, const char *newext)
{
    // verify length
    if (strlen(path) > len) {
        errno = ENAMETOOLONG;
        return -1;
    }

    // copy filename
    strcpy(buf, path);

    // change fext
    return chfext(buf, len, newext);
}