From 5d1cff28c33560c8e6a11eb202668de3c476b4b4 Mon Sep 17 00:00:00 2001 From: Shawn Lower Date: Feb 11 2012 10:08:09 +0000 Subject: os.getlogin() raises an exception if the current session cannot be found in the /var/run/utmp file. This can happen if the user is not running from a login shell, e.g. from tmux. This change tries os.getlogin() but falls back to using either the $LOGNAME environment variable, or pwd.getpwduid(os.getuid())[0] --- diff --git a/r2spec/r2spec_obj.py b/r2spec/r2spec_obj.py index ff789c4..f6381f5 100644 --- a/r2spec/r2spec_obj.py +++ b/r2spec/r2spec_obj.py @@ -26,6 +26,7 @@ import ConfigParser import logging import os import sys +import pwd from urlparse import urlparse from r2spec.build import Build @@ -128,7 +129,16 @@ def save_config(configfile, parser): class Settings(object): """ R2spec user config Setting""" # Editor to use in the spec - packager = os.getlogin() + try: + packager = os.getlogin() + except OSError: + # os.getlogin() raises an exception when the session is not + # in /var/run/utmp (non-login sessions) + if os.environ.has_key('LOGNAME'): + packager = os.environ['LOGNAME'] + else: + packager = pwd.getpwuid(os.getuid())[0] + # Editor email to use in the spec email = ''