Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-10-09 19:18:54 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-10-09 19:18:54 (GMT)
commit46d128c85a21bf48131de921d1a30177ea1441da (patch)
tree1df473c3e273952de7767aab19f3cda91c8b2c69 /shell
parentb44a2916ba410366078fd2f8dc5ddb10b3c4e65a (diff)
Cleanup the logs stuff a bit.
Diffstat (limited to 'shell')
-rw-r--r--shell/Makefile.am3
-rw-r--r--shell/logsmanager.py54
-rwxr-xr-xshell/sugar-shell7
3 files changed, 62 insertions, 2 deletions
diff --git a/shell/Makefile.am b/shell/Makefile.am
index a9be795..56649be 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -3,7 +3,8 @@ SUBDIRS = hardware model view intro
bin_SCRIPTS = sugar-shell
sugardir = $(pkgdatadir)/shell
-sugar_PYTHON = \
+sugar_PYTHON = \
+ logsmanager.py \
shellservice.py
confdir = $(pkgdatadir)/shell
diff --git a/shell/logsmanager.py b/shell/logsmanager.py
new file mode 100644
index 0000000..caa50d2
--- /dev/null
+++ b/shell/logsmanager.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2007 Red Hat, Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+import os
+import time
+
+from sugar import env
+
+_MAX_BACKUP_DIRS = 3
+
+def setup():
+ logs_dir = env.get_logs_path()
+ if not os.path.isdir(logs_dir):
+ os.makedirs(logs_dir)
+
+ backup_logs = []
+ backup_dirs = []
+ for f in os.listdir(logs_dir):
+ path = os.path.join(logs_dir, f)
+ if os.path.isfile(path):
+ backup_logs.append(f)
+ elif os.path.isdir(path):
+ backup_dirs.append(path)
+
+ if len(backup_dirs) > _MAX_BACKUP_DIRS:
+ backup_dirs.sort()
+ root = backup_dirs[0]
+ for f in os.listdir(root):
+ os.remove(os.path.join(root, f))
+ os.rmdir(root)
+
+ if len(backup_logs) > 0:
+ name = str(int(time.time()))
+ backup_dir = os.path.join(logs_dir, name)
+ os.mkdir(backup_dir)
+ for log in backup_logs:
+ source_path = os.path.join(logs_dir, log)
+ dest_path = os.path.join(backup_dir, log)
+ os.rename(source_path, dest_path)
+
diff --git a/shell/sugar-shell b/shell/sugar-shell
index 9f1d3a2..8f78289 100755
--- a/shell/sugar-shell
+++ b/shell/sugar-shell
@@ -19,6 +19,7 @@ import sys
import os
from ConfigParser import ConfigParser
import gettext
+import signal
import pygtk
pygtk.require('2.0')
@@ -37,6 +38,7 @@ from model.shellmodel import ShellModel
from shellservice import ShellService
from hardware import hardwaremanager
from intro import intro
+import logsmanager
def _start_matchbox():
cmd = ['matchbox-window-manager']
@@ -94,7 +96,7 @@ def _shell_started_cb():
def main():
gobject.idle_add(_shell_started_cb)
- logger.setup_logs_dir()
+ logsmanager.setup()
logger.start('shell')
_save_session_info()
@@ -110,6 +112,9 @@ def main():
win.show_all()
gtk.main()
+ # FIXME avoid zombie activity processes
+ signal.signal(signal.SIGCHLD, signal.SIG_IGN)
+
if os.environ.has_key("SUGAR_TP_DEBUG"):
# Allow the user time to start up telepathy connection managers
# using the Sugar DBus bus address