798
801
fds_unlock (data);
809
#define DETSTATS_MAX 50
810
static struct detstats_s detstats_data[DETSTATS_MAX];
811
static unsigned int detstats_idx = 0, detstats_total = 0;
814
detstats_clear (void)
816
pthread_mutex_lock (&detstats_lock);
817
detstats_idx = detstats_total = 0;
818
pthread_mutex_unlock (&detstats_lock);
822
detstats_add (const char *virname, const char *fname, unsigned int fsize,
825
pthread_mutex_lock (&detstats_lock);
827
strncpy (detstats_data[detstats_idx].virname, virname,
828
sizeof (detstats_data[detstats_idx].virname));
829
detstats_data[detstats_idx].
830
virname[sizeof (detstats_data[detstats_idx].virname) - 1] = 0;
832
if ((fname = strrchr (fname, *PATHSEP)))
834
strncpy (detstats_data[detstats_idx].fname,
836
|| !strlen (fname)) ? "NOFNAME" : fname,
837
sizeof (detstats_data[detstats_idx].fname));
838
detstats_data[detstats_idx].
839
fname[sizeof (detstats_data[detstats_idx].fname) - 1] = 0;
841
strncpy (detstats_data[detstats_idx].md5, md5,
842
sizeof (detstats_data[detstats_idx].md5));
843
detstats_data[detstats_idx].md5[sizeof (detstats_data[detstats_idx].md5) -
846
detstats_data[detstats_idx].fsize = fsize;
847
detstats_data[detstats_idx++].time = time (NULL);
848
if (detstats_idx == DETSTATS_MAX)
851
pthread_mutex_unlock (&detstats_lock);
855
detstats_print (int desc, char term)
859
pthread_mutex_lock (&detstats_lock);
860
for (i = 0; i < DETSTATS_MAX && i < detstats_total; i++)
861
mdprintf (desc, "%u:%s:%u:%s:%s%c", detstats_data[i].time,
862
detstats_data[i].md5, detstats_data[i].fsize,
863
detstats_data[i].virname, detstats_data[i].fname, term);
864
pthread_mutex_unlock (&detstats_lock);
869
806
fan_checkowner (int pid, const struct optstruct *opts)