-/*
- * Calculate the elapsed time between two timeval values
- *
- * Args:
- * end: end time, result is also stored in this structure
- * start: start time
- */
-void timeDiff(struct timeval* const end, const struct timeval* const start)
-{
- if (end->tv_usec >= start->tv_usec)
- {
- end->tv_sec-= start->tv_sec;
- end->tv_usec-= start->tv_usec;
- }
- else
- {
- end->tv_sec= end->tv_sec - start->tv_sec - 1;
- end->tv_usec= end->tv_usec - start->tv_usec + 1e6;
- }
-}
-
-
-/*
- * A GCompareFunc for g_slist_find_custom()
- *
- * Args:
- * a: ProcessingModule*, element's data
- * b: char*, user data to compare against
- *
- * Returns:
- * 0 if the processing module a's name is b
- */
-gint gcfCompareProcessing(gconstpointer a, gconstpointer b)
-{
- const ProcessingModule* processingModule;
- const char* name;
-
- processingModule= (const ProcessingModule*) a;
- name= (const char*) b;
-
- return strncmp(processingModule->name, name,
- strlen(processingModule->name) + 1);
-}
-
-
-/*
- * A GCompareFunc for g_slist_find_custom()
- *
- * Args:
- * a: MatchingModule*, element's data
- * b: char*, user data to compare against
- *
- * Returns:
- * 0 if the matching module a's name is b
- */
-gint gcfCompareMatching(gconstpointer a, gconstpointer b)
-{
- const MatchingModule* matchingModule;
- const char* name;
-
- matchingModule= (const MatchingModule*) a;
- name= (const char*) b;
-
- return strncmp(matchingModule->name, name, strlen(matchingModule->name) +
- 1);
-}
-
-
-/*
- * A GCompareFunc for g_slist_find_custom()
- *
- * Args:
- * a: AnalysisModule*, element's data
- * b: char*, user data to compare against
- *
- * Returns:
- * 0 if the analysis module a's name is b
- */
-gint gcfCompareAnalysis(gconstpointer a, gconstpointer b)
-{
- const AnalysisModule* analysisModule;
- const char* name;
-
- analysisModule= (const AnalysisModule*) a;
- name= (const char*) b;
-
- return strncmp(analysisModule->name, name, strlen(analysisModule->name) +
- 1);
-}
-
-
-/*
- * A GFunc for g_queue_foreach()
- *
- * Concatenate analysis module names.
- *
- * Args:
- * data: AnalysisModule*
- * user_data: GString*, concatenated names
- */
-static void gfAppendAnalysisName(gpointer data, gpointer user_data)
-{
- g_string_append((GString*) user_data, ((AnalysisModule*) data)->name);
- g_string_append((GString*) user_data, ", ");
-}
-
-
-/*
- * Change to the directory used to hold graphs. Create it if necessary.
- *
- * Args:
- * graph: name of directory
- *
- * Returns:
- * The current working directory before the execution of the function. The
- * string must be free'd by the caller.
- */
-char* changeToGraphDir(const char* const graphs)
-{
- int retval;
- char* cwd;
-
- cwd= getcwd(NULL, 0);
- if (cwd == NULL)
- {
- g_error(strerror(errno));
- }
- while ((retval= chdir(graphs)) != 0)
- {
- if (errno == ENOENT)
- {
- retval= mkdir(graphs, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP |
- S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH);
- if (retval != 0)
- {
- g_error(strerror(errno));
- }
- }
- else
- {
- g_error(strerror(errno));
- }
- }
-
- return cwd;
-}
-
-