glviewvol

diff src/volume.cc @ 2:701507c8238f

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 28 Dec 2014 15:26:36 +0200
parents cc9e0d8590e2
children 32c4a7160350
line diff
     1.1 --- a/src/volume.cc	Sat Dec 27 06:32:28 2014 +0200
     1.2 +++ b/src/volume.cc	Sun Dec 28 15:26:36 2014 +0200
     1.3 @@ -1,6 +1,7 @@
     1.4  #include <stdio.h>
     1.5  #include <string.h>
     1.6  #include <ctype.h>
     1.7 +#include <alloca.h>
     1.8  #include <errno.h>
     1.9  #include <math.h>
    1.10  #include "volume.h"
    1.11 @@ -80,18 +81,28 @@
    1.12  
    1.13  bool VoxelVolume::load(const char *fname)
    1.14  {
    1.15 +	char *prefix = (char*)alloca(strlen(fname) + 1);
    1.16 +	strcpy(prefix, fname);
    1.17 +	char *slash = strrchr(prefix, '/');
    1.18 +	if(slash) {
    1.19 +		*slash = 0;
    1.20 +	} else {
    1.21 +		prefix = 0;
    1.22 +	}
    1.23 +
    1.24  	FILE *fp = fopen(fname, "r");
    1.25  	if(!fp) {
    1.26  		fprintf(stderr, "failed to open file: %s: %s\n", fname, strerror(errno));
    1.27  		return false;
    1.28  	}
    1.29  
    1.30 -	char buf[512];
    1.31 +	char buf[256], path[300];
    1.32  	while(fgets(buf, sizeof buf, fp)) {
    1.33  		char *line = strip_space(buf);
    1.34 +		sprintf(path, "%s/%s", prefix, line);
    1.35  
    1.36  		Image img;
    1.37 -		if(!img.load(line)) {
    1.38 +		if(!img.load(path)) {
    1.39  			slices.clear();
    1.40  			return false;
    1.41  		}