Joseph Redmon
2015-03-30 81751b47dd5d2e63f571f048bdd0a6a2a45617b0
src/utils.c
@@ -2,11 +2,39 @@
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <unistd.h>
#include <float.h>
#include <limits.h>
#include "utils.h"
char *basecfg(char *cfgfile)
{
    char *c = cfgfile;
    char *next;
    while((next = strchr(c, '/')))
    {
        c = next+1;
    }
    c = copy_string(c);
    next = strchr(c, '_');
    if (next) *next = 0;
    next = strchr(c, '.');
    if (next) *next = 0;
    return c;
}
int alphanum_to_int(char c)
{
    return (c < 58) ? c - 48 : c-87;
}
char int_to_alphanum(int i)
{
    if (i == 36) return '.';
    return (i < 10) ? i + 48 : i + 87;
}
void pm(int M, int N, float *A)
{
    int i,j;
@@ -148,6 +176,27 @@
    return line;
}
void read_all(int fd, char *buffer, size_t bytes)
{
    size_t n = 0;
    while(n < bytes){
        int next = read(fd, buffer + n, bytes-n);
        if(next <= 0) error("read failed");
        n += next;
    }
}
void write_all(int fd, char *buffer, size_t bytes)
{
    size_t n = 0;
    while(n < bytes){
        size_t next = write(fd, buffer + n, bytes-n);
        if(next <= 0) error("write failed");
        n += next;
    }
}
char *copy_string(char *s)
{
    char *copy = malloc(strlen(s)+1);
@@ -227,10 +276,10 @@
    return variance;
}
float constrain(float a, float max)
float constrain(float min, float max, float a)
{
    if(a > abs(max)) return abs(max);
    if(a < -abs(max)) return -abs(max);
    if (a < min) return min;
    if (a > max) return max;
    return a;
}