Added lockfile feature, to prevent multiple launches within 30 seconds
(due to over-clicking, for example).
This commit is contained in:
parent
6752deb266
commit
00c5d44b96
5 changed files with 144 additions and 11 deletions
|
|
@ -7,7 +7,15 @@ bill@newbreedsoftware.com
|
|||
http://www.newbreedsoftware.com/tuxpaint/
|
||||
|
||||
|
||||
2004.September.04 (0.9.14) [cvs]
|
||||
2004.September.13 (0.9.14) [cvs]
|
||||
* Added lockfile support, to prevent Tux Paint from being launched more
|
||||
than once every 30 seconds. (Disable with "--nolockfile" command-line
|
||||
argument.) Thanks to Darci Lindgren for suggestion the feature, and
|
||||
Mark K. Kim for suggesting it be time-based.
|
||||
|
||||
(Lockfile is "lockfile.dat" in "~/.tuxpaint/" on Linux/Unix, and
|
||||
"userdata\" on Windows.)
|
||||
|
||||
* Updated Catalan translation.
|
||||
Pere Pujal Carabantes <ppujal@airtel.net>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
[2]bill@newbreedsoftware.com
|
||||
[3]http://www.newbreedsoftware.com/tuxpaint/
|
||||
|
||||
June 14, 2002 - June 20, 2004
|
||||
June 14, 2002 - September 13, 2004
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -384,6 +384,8 @@ Options
|
|||
|----------------------+--------------------+-----------|
|
||||
|british-english |british | |
|
||||
|----------------------+--------------------+-----------|
|
||||
|bulgarian | | |
|
||||
|----------------------+--------------------+-----------|
|
||||
|catalan |catala | |
|
||||
|----------------------+--------------------+-----------|
|
||||
|chinese |simplified-chinese | |
|
||||
|
|
@ -553,6 +555,23 @@ Options
|
|||
Only your own configuration file, "~/.tuxpaintrc", if it
|
||||
exists, will be used.
|
||||
|
||||
--nolockfile
|
||||
|
||||
By default, Tux Paint uses what's known as a 'lockfile' to
|
||||
prevent it from being launched more than once in
|
||||
30 seconds. (This is to avoid accidentally running
|
||||
multiple copies; for example, by double-clicking a
|
||||
single-click launcher, or simply impatiently clicking the
|
||||
icon multiple times.)
|
||||
|
||||
To make Tux Paint ignore the lockfile, allowing it to run
|
||||
again, even if it was just launched less than 30 seconds
|
||||
ago, run Tux Paint with the '--nolockfile' option on the
|
||||
command-line.
|
||||
|
||||
By default, the lockfile is stored in "~/.tuxpaint/" under
|
||||
Linux and Unix, and "userdata\" under Windows.
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Command-Line Informational Options
|
||||
|
|
@ -606,6 +625,8 @@ Options
|
|||
|---------------+-------------------+---------------------|
|
||||
|be_BY |Bielaruskaja |Belarusian |
|
||||
|---------------+-------------------+---------------------|
|
||||
|bg_BG | |Bulgarian |
|
||||
|---------------+-------------------+---------------------|
|
||||
|br_FR |Brezhoneg |Breton |
|
||||
|---------------+-------------------+---------------------|
|
||||
|ca_ES |Catal`a |Catalan |
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ New Breed Software</p>
|
|||
<p><a href="mailto:bill@newbreedsoftware.com">bill@newbreedsoftware.com</a><br>
|
||||
<a href="http://www.newbreedsoftware.com/tuxpaint/">http://www.newbreedsoftware.com/tuxpaint/</a></p>
|
||||
|
||||
<p>June 14, 2002 - August 19, 2004</p>
|
||||
<p>June 14, 2002 - September 13, 2004</p>
|
||||
</center>
|
||||
|
||||
<hr size=2 noshade>
|
||||
|
|
@ -820,6 +820,24 @@ New Breed Software</p>
|
|||
<p>Only your own configuration file, "<code>~/.tuxpaintrc</code>",
|
||||
if it exists, will be used.</p>
|
||||
</dd>
|
||||
|
||||
<dt><code><b>--nolockfile</b></code></dt>
|
||||
<dd>
|
||||
<p>By default, Tux Paint uses what's known as a 'lockfile'
|
||||
to prevent it from being launched more than once in 30 seconds.
|
||||
(This is to avoid accidentally running multiple copies; for example,
|
||||
by double-clicking a single-click launcher, or simply
|
||||
impatiently clicking the icon multiple times.)</p>
|
||||
|
||||
<p>To make Tux Paint ignore the lockfile, allowing it to
|
||||
run again, even if it was just launched less than 30 seconds
|
||||
ago, run Tux Paint with the '<code>--nolockfile</code>' option
|
||||
on the command-line.</p>
|
||||
|
||||
<p>By default, the lockfile is stored in
|
||||
"<code>~/.tuxpaint/</code>" under Linux and Unix,
|
||||
and "<code>userdata\</code>" under Windows.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
.\" tuxpaint.1 - 2004.08.19
|
||||
.TH TUXPAINT 1 "19 Aug 2004" "0.9.14" "Tux Paint"
|
||||
.\" tuxpaint.1 - 2004.09.13
|
||||
.TH TUXPAINT 1 "13 Sep 2004" "0.9.14" "Tux Paint"
|
||||
.SH NAME
|
||||
tuxpaint -- A drawing program for young children.
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ tuxpaint -- A drawing program for young children.
|
|||
|
||||
.TP 9
|
||||
.B tuxpaint
|
||||
[\-\-nosysconfig]
|
||||
[\-\-nosysconfig] [\-\-nolockfile]
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
|
|
@ -403,6 +403,14 @@ Display a lists of all supported languages.
|
|||
With this option, \fITux Paint\fP will not attempt to read the
|
||||
system-wide configuration file (typically \fI/etc/tuxpaint/tuxpaint.conf\fP).
|
||||
|
||||
.TP 8
|
||||
.B \-\-nolockfile
|
||||
By default, \fITux Paint\fP uses a lockfile (stored in the user's
|
||||
local Tux Paint directory) which prevents it from being launched more than
|
||||
once in 30 seconds. (Sometimes children get too eager, or user interfaces
|
||||
only require one click, but users think they need to double-click.)
|
||||
This option makes \fITux Paint\fP ignore the current lockfile.
|
||||
|
||||
.SH ENVIRONMENT
|
||||
.l
|
||||
While \fITux Paint\fP may refer to a number of environment variables indirectly
|
||||
|
|
@ -435,7 +443,8 @@ User's configuration file. It can be used to set default options
|
|||
override any settings in the system-wide configuration file.
|
||||
.RS
|
||||
.PP
|
||||
(Not created or edited automatically; must be created manually.)
|
||||
(Not created or edited automatically; must be created manually.
|
||||
You can do this by hand, or use '\fITux Paint Config.\fP.')
|
||||
.RE
|
||||
.TP 8
|
||||
.B $HOME/.tuxpaint/saved/
|
||||
|
|
@ -455,6 +464,16 @@ is re-run.)
|
|||
.PP
|
||||
(Created when \fITux Paint\fP is \fIQuit\fP.)
|
||||
.RE
|
||||
.TP 8
|
||||
.B $HOME/.tuxpaint/lockfile.dat
|
||||
A lockfile that prevents \fITux Paint\fP from being launched more than once
|
||||
every 30 seconds. Disable checking the lockfile by using the
|
||||
'\-\-nolockfile' command-line argument.
|
||||
.RS
|
||||
.PP
|
||||
(There's no reason to delete the lockfile, as it contains a timestamp
|
||||
inside which causes it to expire after 30 seconds.)
|
||||
.RE
|
||||
|
||||
.SH COPYRIGHT
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
June 14, 2002 - September 4, 2004
|
||||
June 14, 2002 - September 13, 2004
|
||||
*/
|
||||
|
||||
|
||||
#define VER_VERSION "0.9.14"
|
||||
#define VER_DATE "2004-09-04"
|
||||
#define VER_DATE "2004-09-13"
|
||||
|
||||
|
||||
/* #define DEBUG */
|
||||
|
|
@ -3746,7 +3746,7 @@ void show_usage(FILE * f, char * prg)
|
|||
#endif
|
||||
" %s [--printdelay=SECONDS]\n"
|
||||
" %s [--lang LANGUAGE | --locale LOCALE | --lang help]\n"
|
||||
" %s [--nosysconfig]\n"
|
||||
" %s [--nosysconfig] [--nolockfile]\n"
|
||||
/* " %s [--record FILE | --playback FILE]\n" */
|
||||
"\n",
|
||||
prg, prg,
|
||||
|
|
@ -3903,7 +3903,7 @@ const char *getfilename(const char* path)
|
|||
|
||||
void setup(int argc, char * argv[])
|
||||
{
|
||||
int i, ok_to_use_sysconfig;
|
||||
int i, ok_to_use_sysconfig, ok_to_use_lockfile;
|
||||
char str[128];
|
||||
char * upstr;
|
||||
SDL_Color black = {0, 0, 0, 0};
|
||||
|
|
@ -3961,6 +3961,7 @@ void setup(int argc, char * argv[])
|
|||
playfile = NULL;
|
||||
recording = 0;
|
||||
playing = 0;
|
||||
ok_to_use_lockfile = 1;
|
||||
|
||||
|
||||
#ifdef __BEOS__
|
||||
|
|
@ -3979,6 +3980,7 @@ void setup(int argc, char * argv[])
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
/* Load options from global config file: */
|
||||
|
||||
#ifndef WIN32
|
||||
|
|
@ -4370,6 +4372,11 @@ void setup(int argc, char * argv[])
|
|||
{
|
||||
debug("Not using system config.");
|
||||
}
|
||||
else if (strcmp(argv[i], "--nolockfile") == 0)
|
||||
{
|
||||
debug("Not using lockfile");
|
||||
ok_to_use_lockfile = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
show_usage(stderr, (char *) getfilename(argv[0]));
|
||||
|
|
@ -4690,6 +4697,66 @@ void setup(int argc, char * argv[])
|
|||
putenv("SDL_VIDEO_X11_WMCLASS=TuxPaint.TuxPaint");
|
||||
#endif
|
||||
|
||||
|
||||
/* Test for lockfile, if we're using one: */
|
||||
|
||||
if (ok_to_use_lockfile)
|
||||
{
|
||||
char * lock_fname;
|
||||
FILE * fi;
|
||||
time_t time_lock, time_now;
|
||||
|
||||
|
||||
/* Get the current time: */
|
||||
|
||||
time_now = time(NULL);
|
||||
|
||||
|
||||
/* Look for the lockfile... */
|
||||
|
||||
lock_fname = get_fname("lockfile.dat");
|
||||
|
||||
fi = fopen(lock_fname, "r");
|
||||
if (fi != NULL)
|
||||
{
|
||||
/* If it exists, read its contents: */
|
||||
|
||||
if (fread(&time_lock, sizeof(time_t), 1, fi) > 0)
|
||||
{
|
||||
/* Has it not been 30 seconds yet? */
|
||||
|
||||
if (time_now < time_lock + 30)
|
||||
{
|
||||
/* FIXME: Wrap in gettext() */
|
||||
printf("\nYou're already running a copy of Tux Paint!\n\n");
|
||||
|
||||
fclose(fi);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fi);
|
||||
}
|
||||
|
||||
|
||||
/* Okay to run; create/update the lockfile */
|
||||
|
||||
fi = fopen(lock_fname, "w");
|
||||
if (fi != NULL)
|
||||
{
|
||||
/* If we can write to it, do so! */
|
||||
|
||||
fwrite(&time_now, sizeof(time_t), 1, fi);
|
||||
fclose(fi);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,
|
||||
"\nWarning: I couldn't create the lockfile (%s)\n"
|
||||
"The error that occurred was:\n"
|
||||
"%s\n\n", lock_fname, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Init SDL Video: */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue