various gtk cleanups.

This commit is contained in:
Charles Kerr
2007-10-13 03:15:02 +00:00
parent f5e5a5584b
commit 39c8a02497
4 changed files with 111 additions and 158 deletions

View File

@@ -22,14 +22,14 @@
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
#include <sys/types.h>
#include <ctype.h>
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -38,32 +38,30 @@
#include <glib/gstdio.h>
#include <libtransmission/transmission.h>
#include <libtransmission/bencode.h>
#include "conf.h"
#include "util.h"
#define CONF_SUBDIR "gtk"
#define FILE_SOCKET "socket"
static char *gl_confdir = NULL;
static char *gl_lockpath = NULL;
static char * gl_confdir = NULL;
static char * gl_lockpath = NULL;
/* errstr may be NULL, this might be called before GTK is initialized */
gboolean
cf_init(const char *dir, char **errstr) {
if(NULL != errstr)
*errstr = NULL;
gl_confdir = g_build_filename(dir, CONF_SUBDIR, NULL);
cf_init(const char *dir, char **errstr)
{
if( errstr != NULL )
*errstr = NULL;
if(mkdir_p(gl_confdir, 0755 ))
return TRUE;
gl_confdir = g_build_filename( dir, "gtk", NULL );
if(NULL != errstr)
*errstr = g_strdup_printf(_("Failed to create the directory %s:\n%s"),
gl_confdir, strerror(errno));
return FALSE;
if( mkdir_p(gl_confdir, 0755 ) )
return TRUE;
if( errstr != NULL )
*errstr = g_strdup_printf( _("Failed to create the directory %s:\n%s"),
gl_confdir, g_strerror(errno) );
return FALSE;
}
/***
@@ -74,50 +72,53 @@ cf_init(const char *dir, char **errstr) {
/* errstr may be NULL, this might be called before GTK is initialized */
static int
lockfile(const char *file, char **errstr) {
int fd, savederr;
struct flock lk;
lockfile(const char *file, char **errstr)
{
int fd;
struct flock lk;
if(NULL != errstr)
*errstr = NULL;
if( errstr )
*errstr = NULL;
if(0 > (fd = open(file, O_RDWR | O_CREAT, 0666))) {
savederr = errno;
if(NULL != errstr)
*errstr = g_strdup_printf(_("Failed to open the file %s for writing:\n%s"),
file, strerror(errno));
errno = savederr;
return -1;
}
memset(&lk, 0, sizeof(lk));
lk.l_start = 0;
lk.l_len = 0;
lk.l_type = F_WRLCK;
lk.l_whence = SEEK_SET;
if(-1 == fcntl(fd, F_SETLK, &lk)) {
savederr = errno;
if(NULL != errstr) {
if(EAGAIN == errno)
*errstr = g_strdup_printf(_("Another copy of %s is already running."),
g_get_application_name());
else
*errstr = g_strdup_printf(_("Failed to lock the file %s:\n%s"),
file, strerror(errno));
fd = open( file, O_RDWR | O_CREAT, 0666 );
if( fd < 0 )
{
const int savederr = errno;
if( errstr )
*errstr = g_strdup_printf(
_("Failed to open the file %s for writing:\n%s"),
file, g_strerror( errno ) );
errno = savederr;
return -1;
}
close(fd);
errno = savederr;
return -1;
}
return fd;
memset( &lk, 0, sizeof( lk ) );
lk.l_start = 0;
lk.l_len = 0;
lk.l_type = F_WRLCK;
lk.l_whence = SEEK_SET;
if( -1 == fcntl( fd, F_SETLK, &lk ) )
{
const int savederr = errno;
if( errstr )
*errstr = ( errno == EAGAIN )
? g_strdup_printf( _( "Another copy of %s is already running." ),
g_get_application_name( ) )
: g_strdup_printf( _( "Failed to lock the file %s:\n%s" ),
file, g_strerror( errno ) );
close( fd );
errno = savederr;
return -1;
}
return fd;
}
static char*
getLockFilename( void )
{
return g_build_filename( tr_getPrefsDirectory(),
CONF_SUBDIR, "lock", NULL );
assert( gl_confdir != NULL );
return g_build_filename( gl_confdir, "lock", NULL );
}
static void
@@ -142,7 +143,8 @@ cf_lock( char ** errstr )
char*
cf_sockname( void )
{
return g_build_filename( gl_confdir, FILE_SOCKET, NULL );
assert( gl_confdir != NULL );
return g_build_filename( gl_confdir, "socket", NULL );
}
/***
@@ -156,8 +158,8 @@ cf_sockname( void )
static char*
getPrefsFilename( void )
{
return g_build_filename( tr_getPrefsDirectory(),
CONF_SUBDIR, "prefs.ini", NULL );
assert( gl_confdir != NULL );
return g_build_filename( gl_confdir, "prefs.ini", NULL );
}
static GKeyFile*
@@ -177,52 +179,43 @@ getPrefsKeyFile( void )
}
int
pref_int_get( const char * key )
{
pref_int_get( const char * key ) {
return g_key_file_get_integer( getPrefsKeyFile( ), GROUP, key, NULL );
}
void
pref_int_set( const char * key, int value )
{
pref_int_set( const char * key, int value ) {
g_key_file_set_integer( getPrefsKeyFile( ), GROUP, key, value );
}
void
pref_int_set_default( const char * key, int value )
{
pref_int_set_default( const char * key, int value ) {
if( !g_key_file_has_key( getPrefsKeyFile( ), GROUP, key, NULL ) )
pref_int_set( key, value );
}
gboolean
pref_flag_get ( const char * key )
{
pref_flag_get ( const char * key ) {
return g_key_file_get_boolean( getPrefsKeyFile( ), GROUP, key, NULL );
}
void
pref_flag_set( const char * key, gboolean value )
{
pref_flag_set( const char * key, gboolean value ) {
g_key_file_set_boolean( getPrefsKeyFile( ), GROUP, key, value );
}
void
pref_flag_set_default( const char * key, gboolean value )
{
pref_flag_set_default( const char * key, gboolean value ) {
if( !g_key_file_has_key( getPrefsKeyFile( ), GROUP, key, NULL ) )
pref_flag_set( key, value );
}
char*
pref_string_get( const char * key )
{
pref_string_get( const char * key ) {
return g_key_file_get_string( getPrefsKeyFile( ), GROUP, key, NULL );
}
void
pref_string_set( const char * key, const char * value )
{
pref_string_set( const char * key, const char * value ) {
g_key_file_set_string( getPrefsKeyFile( ), GROUP, key, value );
}
void
pref_string_set_default( const char * key, const char * value )
{
pref_string_set_default( const char * key, const char * value ) {
if( !g_key_file_has_key( getPrefsKeyFile( ), GROUP, key, NULL ) )
pref_string_set( key, value );
}