//************************************************************************** #include <iostream.h> #include <fstream.h> #include <stdio.h> #include <stdlib.h> // for atoi() #include <string.h> #include <stdarg.h> #include <math.h> #include <time.h> #include "utils.h" //************************************************************************** // e.g extract "lenna" from "images/lenna.gif" char *ExtractName(char *s) { int n = strlen(s); int begin = 0, end = n-1; for (int i = 0; i < n; i++) { if (s[i] == '/') begin = i+1; if (s[i] == '.') end = i-1; } if (begin >= end) { begin = 0; end = n - 1; } int length = end-begin+1; char *snew = new char [length+1]; snew[length] = '\0'; strncpy(snew, &s[begin], length); return snew; } //************************************************************************** int FileCopy(char *source, char *dest, int printflag) { FILE *in, *out; char a; in = fopen(source,"rb"); out = fopen(dest,"wb"); if (!in || !out) { cerr << "FileCopy: Error with file \"" << source << "\" or \"" << dest << "\"!!" << endl; exit(-1); } if (printflag) { cout << "Copying file \"" << source << "\" to file \"" << dest << "\"..."; cout.flush(); } while (!feof(in)) { fread((void *) &a, sizeof(char), 1 , in); fwrite((void *) &a, sizeof(char), 1 , out); } fclose(in); fclose(out); if (printflag) { cout << "done!" << endl; cout.flush(); } return 1; } /*************************************************************************/ int FileCopy(char *source, char *dest) { return FileCopy(source, dest, 1); } /*************************************************************************/ int system_command(char *fmt, ...) { va_list argptr; char buffer[300]; int err; va_start(argptr,fmt); vsprintf(buffer,fmt,argptr); va_end(argptr); err = system(buffer); return err; } /*************************************************************************/ int myrand() { static int firstcall = 1; if (firstcall) { time_t time_now; firstcall = 0; time(&time_now); srand(((int) time_now)%10000); } return rand(); } /****************************************************************/ char *convert_image_format(char *filename, char *fmt) { char *tmpfile = new char [40]; sprintf(tmpfile,"/tmp/mytmp%08d", myrand()); FileCopy(filename, tmpfile, 0); system_command("mogrify -format %s %s 2> /dev/null", fmt, tmpfile); system_command("mv %s.%s %s", tmpfile, fmt, tmpfile); return tmpfile; } /****************************************************************/ int deleteFile(char *filename) { return system_command("rm -f %s 2> /dev/null",filename); } /****************************************************************/ int moveFile(char *src, char *dest) { return system_command("mv %s %s", src, dest); } /****************************************************************/ int parseArg(int argc, char *argv[], char *tag) { for (int i = 2; i < argc; i++) { if (strstr(argv[i], tag) == argv[i] && strlen(tag) == strlen(argv[i]) && i < argc-1) { return (i+1); } } return 0; } //************************************************************************** char *printOnOff(int flag) { char *s = new char [4]; if (flag) strcpy(s, "ON"); else strcpy(s, "OFF"); return s; } //**************************************************************************