/*
gutenfetch - a small utility to list and fetch books available through
project gutenberg
Copyright (C) 2001, 2002, 2003, 2004 Russell Francis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the
Free Software Foundation, Inc.
59 Temple Place, Suite 330
Boston, MA 02111-1307 USA
Last updated on $Date: 2004/03/21 05:15:09 $ by $Author: johntabularasa $.
*/
#include "stddefs.h"
#include "libgutenfetch_fileinfo.h"
#ifdef HAVE_ASSERT_H
#include <assert.h>
#endif /* HAVE_ASSERT_H */
#ifdef HAVE_STRING_H
#include <string.h>
#endif /* HAVE_STRING_H */
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif /* HAVE_STRINGS_H */
/**
* file_info_new
*
* Generate a new filled in file_info_t structure.
*
* @param filename The filename.
* @param filesize The filesize.
* @return A new *valid* file_info_t structure. this function
* will not fail.
*/
file_info_t *
file_info_new(const char *filename, size_t filesize)
{
file_info_t *fi = malloc(sizeof(file_info_t));
assert(fi != NULL);
fi->filesize = filesize;
fi->filename = strdup(filename);
assert(fi->filename != NULL);
return fi;
}
/**
* file_info_free
*
* Free the resources held by a file_info_t structure.
*
* @param fi The file_info_t structure.
*/
void
file_info_free(file_info_t *fi)
{
if (fi != NULL) {
FREE_NULL(fi->filename);
free(fi);
}
}
/**
* file_info_compare
*
* Compare two file_info_t structures and return
* an integer which describes how they relate.
*
* @param a One file_info_t structure.
* @param b Another file_info_t structure.
* @param p An optional user supplied parameter.
* @return -1, 0, 1 same semantics as strcmp().
*/
int
file_info_compare(
const file_info_t *a,
const file_info_t *b,
void *p)
{
assert( a != NULL );
assert( b != NULL );
return strcmp(a->filename, b->filename);
}
syntax highlighted by Code2HTML, v. 0.9.1