#endif
#if defined(CYGWIN)
-static char seperator = '/';
+char path_seperator = '/';
#elif defined(WIN32)
-static char seperator = '\\';
+char path_seperator = '\\';
#else
-static char seperator = '/';
+char path_seperator = '/';
#endif
#ifdef WIN32
int l2 = strlen(add);
int pos = 0;
char*n = 0;
- while(l1 && base[l1-1] == seperator)
+ while(l1 && base[l1-1] == path_seperator)
l1--;
- while(pos < l2 && add[pos] == seperator)
+ while(pos < l2 && add[pos] == path_seperator)
pos++;
n = (char*)malloc(l1 + (l2-pos) + 2);
memcpy(n,base,l1);
- n[l1]=seperator;
+ n[l1]=path_seperator;
strcpy(&n[l1+1],&add[pos]);
return n;
}
// used to be mktemp. This does remove the warnings, but
// It's not exactly an improvement.
#ifdef HAVE_LRAND48
- sprintf(ptr, "%s%s%08x%08x",dir,sep,lrand48(),lrand48());
+ sprintf(ptr, "%s%s%08x%08x",dir,sep,(unsigned int)lrand48(),(unsigned int)lrand48());
#else
# ifdef HAVE_RAND
sprintf(ptr, "%s%s%08x%08x",dir,sep,rand(),rand());
#else
free(file->data);
#endif
- file->data = file->len = 0;
+ file->data = 0;
+ file->len = 0;
free(file);
}
+void move_file(const char*from, const char*to)
+{
+ int result = rename(from, to);
+
+ if(result==0) return; //done!
+
+ /* if we can't rename, for some reason, copy the file
+ manually */
+ FILE*fi = fopen(from, "rb");
+ if(!fi) {
+ perror(from);
+ return;
+ }
+ FILE*fo = fopen(to, "wb");
+ if(!fo) {
+ perror(to);
+ return;
+ }
+ char buffer[16384];
+ while(1) {
+ int bytes = fread(buffer, 16384, 1, fi);
+ if(bytes<=0)
+ return;
+ fwrite(buffer, bytes, 1, to);
+ }
+
+ fclose(fo);
+ fclose(fi);
+}
+