//**************************************************************************
#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;
}
//**************************************************************************