(trunk) move tr_lockfile from libtransmission/ to gtk/, since the gtk client is the only one who uses it anymore
This commit is contained in:
parent
d125d9a967
commit
61e95595b8
19
gtk/conf.c
19
gtk/conf.c
|
@ -75,27 +75,27 @@ cf_init( const char * configDir,
|
|||
|
||||
/* errstr may be NULL, this might be called before GTK is initialized */
|
||||
static gboolean
|
||||
lockfile( const char * filename,
|
||||
tr_lockfile_state_t *tr_state,
|
||||
char ** errstr )
|
||||
lockfile( const char * filename,
|
||||
gtr_lockfile_state_t * tr_state,
|
||||
char ** errstr )
|
||||
{
|
||||
const tr_lockfile_state_t state = tr_lockfile( filename );
|
||||
const gboolean success = state == TR_LOCKFILE_SUCCESS;
|
||||
const gtr_lockfile_state_t state = gtr_lockfile( filename );
|
||||
const gboolean success = state == GTR_LOCKFILE_SUCCESS;
|
||||
|
||||
if( errstr ) switch( state )
|
||||
{
|
||||
case TR_LOCKFILE_EOPEN:
|
||||
case GTR_LOCKFILE_EOPEN:
|
||||
*errstr =
|
||||
g_strdup_printf( _( "Couldn't open \"%1$s\": %2$s" ),
|
||||
filename, g_strerror( errno ) );
|
||||
break;
|
||||
|
||||
case TR_LOCKFILE_ELOCK:
|
||||
case GTR_LOCKFILE_ELOCK:
|
||||
*errstr = g_strdup_printf( _( "%s is already running." ),
|
||||
g_get_application_name( ) );
|
||||
break;
|
||||
|
||||
case TR_LOCKFILE_SUCCESS:
|
||||
case GTR_LOCKFILE_SUCCESS:
|
||||
*errstr = NULL;
|
||||
break;
|
||||
}
|
||||
|
@ -125,8 +125,7 @@ cf_removelocks( void )
|
|||
|
||||
/* errstr may be NULL, this might be called before GTK is initialized */
|
||||
gboolean
|
||||
cf_lock( tr_lockfile_state_t *tr_state,
|
||||
char ** errstr )
|
||||
cf_lock( gtr_lockfile_state_t * tr_state, char ** errstr )
|
||||
{
|
||||
char * path = getLockFilename( );
|
||||
const gboolean didLock = lockfile( path, tr_state, errstr );
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include <inttypes.h>
|
||||
#include <libtransmission/transmission.h>
|
||||
#include "util.h" /* gtr_lockfile */
|
||||
|
||||
int64_t pref_int_get ( const char * key );
|
||||
void pref_int_set ( const char * key, int64_t value );
|
||||
|
@ -67,7 +68,7 @@ gboolean pref_flag_eval( pref_flag_t val,
|
|||
gboolean cf_init( const char *confdir,
|
||||
char ** errstr );
|
||||
|
||||
gboolean cf_lock( tr_lockfile_state_t *tr_state,
|
||||
char ** errstr );
|
||||
gboolean cf_lock( gtr_lockfile_state_t * tr_state,
|
||||
char ** errstr );
|
||||
|
||||
#endif /* TG_CONF_H */
|
||||
|
|
27
gtk/main.c
27
gtk/main.c
|
@ -325,20 +325,19 @@ onRPCChanged( tr_session * session UNUSED,
|
|||
}
|
||||
|
||||
int
|
||||
main( int argc,
|
||||
char ** argv )
|
||||
main( int argc, char ** argv )
|
||||
{
|
||||
char * err = NULL;
|
||||
GSList * argfiles;
|
||||
GError * gerr;
|
||||
gboolean didinit = FALSE;
|
||||
gboolean didlock = FALSE;
|
||||
gboolean showversion = FALSE;
|
||||
gboolean startpaused = FALSE;
|
||||
gboolean startminimized = FALSE;
|
||||
const char * domain = MY_NAME;
|
||||
char * configDir = NULL;
|
||||
tr_lockfile_state_t tr_state;
|
||||
char * err = NULL;
|
||||
GSList * argfiles;
|
||||
GError * gerr;
|
||||
gboolean didinit = FALSE;
|
||||
gboolean didlock = FALSE;
|
||||
gboolean showversion = FALSE;
|
||||
gboolean startpaused = FALSE;
|
||||
gboolean startminimized = FALSE;
|
||||
const char * domain = MY_NAME;
|
||||
char * configDir = NULL;
|
||||
gtr_lockfile_state_t tr_state;
|
||||
|
||||
GOptionEntry entries[] = {
|
||||
{ "paused", 'p', 0, G_OPTION_ARG_NONE,
|
||||
|
@ -415,7 +414,7 @@ main( int argc,
|
|||
}
|
||||
}
|
||||
}
|
||||
else if( ( !didlock ) && ( tr_state == TR_LOCKFILE_ELOCK ) )
|
||||
else if( ( !didlock ) && ( tr_state == GTR_LOCKFILE_ELOCK ) )
|
||||
{
|
||||
/* There's already another copy of Transmission running,
|
||||
* so tell it to present its window to the user */
|
||||
|
|
53
gtk/util.c
53
gtk/util.c
|
@ -16,6 +16,10 @@
|
|||
#include <stdlib.h> /* free() */
|
||||
#include <string.h> /* strcmp() */
|
||||
|
||||
#include <sys/types.h> /* for gtr_lockfile()'s open() */
|
||||
#include <sys/stat.h> /* for gtr_lockfile()'s open() */
|
||||
#include <fcntl.h> /* for gtr_lockfile()'s open() */
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <glib/gstdio.h> /* g_unlink() */
|
||||
|
@ -37,6 +41,55 @@
|
|||
#include "tr-prefs.h"
|
||||
#include "util.h"
|
||||
|
||||
gtr_lockfile_state_t
|
||||
gtr_lockfile( const char * filename )
|
||||
{
|
||||
gtr_lockfile_state_t ret;
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
HANDLE file = CreateFile( filename,
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_ALWAYS,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
NULL );
|
||||
if( file == INVALID_HANDLE_VALUE )
|
||||
ret = GTR_LOCKFILE_EOPEN;
|
||||
else if( !LockFile( file, 0, 0, 1, 1 ) )
|
||||
ret = GTR_LOCKFILE_ELOCK;
|
||||
else
|
||||
ret = GTR_LOCKFILE_SUCCESS;
|
||||
|
||||
#else
|
||||
|
||||
int fd = open( filename, O_RDWR | O_CREAT, 0666 );
|
||||
if( fd < 0 )
|
||||
ret = GTR_LOCKFILE_EOPEN;
|
||||
else {
|
||||
struct flock lk;
|
||||
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 ) )
|
||||
ret = GTR_LOCKFILE_ELOCK;
|
||||
else
|
||||
ret = GTR_LOCKFILE_SUCCESS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
|
||||
char*
|
||||
tr_strlratio( char * buf, double ratio, size_t buflen )
|
||||
{
|
||||
|
|
20
gtk/util.h
20
gtk/util.h
|
@ -14,6 +14,7 @@
|
|||
#define GTR_UTIL_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
/* macro to shut up "unused parameter" warnings */
|
||||
#ifndef UNUSED
|
||||
|
@ -61,6 +62,20 @@ GSList * checkfilenames( int argc, char ** argv );
|
|||
****
|
||||
***/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GTR_LOCKFILE_SUCCESS = 0,
|
||||
GTR_LOCKFILE_EOPEN,
|
||||
GTR_LOCKFILE_ELOCK
|
||||
}
|
||||
gtr_lockfile_state_t;
|
||||
|
||||
gtr_lockfile_state_t gtr_lockfile( const char * filename );
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
||||
void gtr_open_file( const char * path );
|
||||
|
||||
gboolean gtr_dbus_add_torrent( const char * filename );
|
||||
|
@ -73,9 +88,6 @@ char* gtr_get_help_url( void );
|
|||
****
|
||||
***/
|
||||
|
||||
/* GTK-related utilities */
|
||||
#ifdef GTK_MAJOR_VERSION
|
||||
|
||||
/* backwards-compatible wrapper around g_mkdir_with_parents() */
|
||||
int gtr_mkdir_with_parents( const char *name, int mode );
|
||||
|
||||
|
@ -121,6 +133,4 @@ gboolean on_tree_view_button_released( GtkWidget * view,
|
|||
/* move a file to the trashcan if GIO is available; otherwise, delete it */
|
||||
int tr_file_trash_or_remove( const char * filename );
|
||||
|
||||
#endif /* GTK_MAJOR_VERSION */
|
||||
|
||||
#endif /* GTR_UTIL_H */
|
||||
|
|
|
@ -663,53 +663,6 @@ tr_getClutchDir( const tr_session * session UNUSED )
|
|||
****
|
||||
***/
|
||||
|
||||
tr_lockfile_state_t
|
||||
tr_lockfile( const char * filename )
|
||||
{
|
||||
tr_lockfile_state_t ret;
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
HANDLE file = CreateFile(
|
||||
filename,
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ |
|
||||
FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_ALWAYS,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
NULL );
|
||||
if( file == INVALID_HANDLE_VALUE )
|
||||
ret = TR_LOCKFILE_EOPEN;
|
||||
else if( !LockFile( file, 0, 0, 1, 1 ) )
|
||||
ret = TR_LOCKFILE_ELOCK;
|
||||
else
|
||||
ret = TR_LOCKFILE_SUCCESS;
|
||||
|
||||
#else
|
||||
|
||||
int fd = open( filename, O_RDWR | O_CREAT, 0666 );
|
||||
if( fd < 0 )
|
||||
ret = TR_LOCKFILE_EOPEN;
|
||||
else
|
||||
{
|
||||
struct flock lk;
|
||||
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 ) )
|
||||
ret = TR_LOCKFILE_ELOCK;
|
||||
else
|
||||
ret = TR_LOCKFILE_SUCCESS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
/* The following mmap functions are by Joerg Walter, and were taken from
|
||||
|
|
|
@ -63,8 +63,6 @@ void tr_lockUnlock( tr_lock * );
|
|||
|
||||
int tr_lockHave( const tr_lock * );
|
||||
|
||||
tr_lockfile_state_t tr_lockfile( const char * filename );
|
||||
|
||||
#ifdef WIN32
|
||||
void * mmap( void *ptr,
|
||||
long size,
|
||||
|
|
|
@ -1356,14 +1356,6 @@ tr_torrent_activity;
|
|||
|
||||
tr_torrent_activity tr_torrentGetActivity( tr_torrent * );
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TR_LOCKFILE_SUCCESS = 0,
|
||||
TR_LOCKFILE_EOPEN,
|
||||
TR_LOCKFILE_ELOCK
|
||||
}
|
||||
tr_lockfile_state_t;
|
||||
|
||||
enum
|
||||
{
|
||||
TR_PEER_FROM_INCOMING = 0, /* connections made to the listening port */
|
||||
|
|
Loading…
Reference in New Issue