[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: [PATCH] two patches for 114771
From: Stefan Teleman <steleman () nyc ! rr ! com>
Date: 2005-11-23 13:14:06
Message-ID: 200511230814.07427.steleman () nyc ! rr ! com
[Download RAW message or body]
hi.
here are two patches based on 3.5rc1 (attached) for bug 114771.
--Stefan
--
Stefan Teleman 'Nobody Expects the Spanish Inquisition'
steleman@nyc.rr.com -Monty Python
["tzone.cpp.diff" (text/x-diff)]
--- tzone.cpp.kde.orig 2005-10-10 11:03:48.000000000 -0400
+++ tzone.cpp 2005-11-19 20:53:10.653170000 -0500
@@ -32,6 +32,7 @@
#include <klocale.h>
#include <kmessagebox.h>
#include <kdialog.h>
+#include <kprocess.h>
#include <kio/netaccess.h>
//#include "xpm/world.xpm"
@@ -44,7 +45,11 @@
#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>
+
+#ifndef INITFILE
+#define INITFILE "/etc/default/init"
#endif
+#endif // USE_SOLARIS
Tzone::Tzone(QWidget * parent, const char *name)
: QVGroupBox(parent, name)
@@ -95,7 +100,7 @@
KTempFile tf( locateLocal( "tmp", "kde-tzone" ) );
tf.setAutoDelete( true );
- QTextStream *ts = tf.textStream();
+ QStringList lines;
QFile fTimezoneFile(INITFILE);
bool updatedFile = false;
@@ -105,24 +110,29 @@
bool found = false;
QTextStream is(&fTimezoneFile);
+ QString line("");
- for (QString line = is.readLine(); !line.isNull();
- line = is.readLine())
+ while ( !is.atEnd() )
{
+ line = is.readLine();
if (line.find("TZ=") == 0)
{
- *ts << "TZ=" << selectedzone << endl;
+ QString newTZ("TZ=");
+ newTZ += selectedzone;
+ lines.append(newTZ);
found = true;
}
else
{
- *ts << line << endl;
+ lines.append(line);
}
}
if (!found)
{
- *ts << "TZ=" << selectedzone << endl;
+ QString newTZ("TZ=");
+ newTZ += selectedzone;
+ lines.append(newTZ);
}
updatedFile = true;
@@ -131,27 +141,48 @@
if (updatedFile)
{
- ts->device()->reset();
- fTimezoneFile.remove();
+ QString backupName(INITFILE);
+ backupName += QString(".old");
- if (fTimezoneFile.open(IO_WriteOnly | IO_Truncate))
- {
- QTextStream os(&fTimezoneFile);
+ ::rename(INITFILE, backupName.latin1());
+ QFile newTimezoneFile(INITFILE);
- for (QString line = ts->readLine(); !line.isNull();
- line = ts->readLine())
+ if (newTimezoneFile.open(IO_WriteOnly | IO_Truncate))
{
- os << line << endl;
- }
+ QTextStream os(&newTimezoneFile);
+ QString line("");
+
+ for (QStringList::Iterator it = lines.begin(); it != lines.end(); ++it)
+ {
+ os << *it << "\n";
+ }
+
+ newTimezoneFile.flush();
+ newTimezoneFile.close();
+ ::fchmod(newTimezoneFile.handle(),
+ (S_IXUSR | S_IRUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH));
+#if defined (i386) || defined (__i386) || defined (__i386__)
+ // Solaris x86 only. This is not necessary on SPARC.
+ KProcess rtcProcess;
+ QString rtc("/usr/sbin/rtc -z ");
+ rtcProcess << rtc << selectedzone.ascii();
+ rtcProcess.start(KProcess::Block);
+ int rtcz = rtcProcess.exitStatus();
+
+ rtcProcess.clearArguments();
+ rtc = "/usr/sbin/rtc -c";
+ rtcProcess << rtc;
+ rtcProcess.start(KProcess::Block);
+ int rtcc = rtcProcess.exitStatus();
- fchmod(fTimezoneFile.handle(),
- S_IXUSR | S_IRUSR | S_IRGRP | S_IXGRP |
- S_IROTH | S_IXOTH);
- fTimezoneFile.close();
+ if ((0 == rtcz) && (0 == rtcc))
+ KMessageBox::information(this, i18n("You must reboot the system for changes to \
take effect."), i18n("Reboot Required")); + else
+ KMessageBox::sorry(this, i18n("Could not set the real-time clock. Please run \
/usr/sbin/rtc manually as root, then reboot."), i18n("Manual Intervention \
Required")); +#endif // i386
}
}
-
QString val = selectedzone;
#else
QFile fTimezoneFile("/etc/timezone");
["ktimezones.cpp.diff" (text/x-diff)]
--- ktimezones.cpp.kde.orig 2005-10-10 11:06:02.000000000 -0400
+++ ktimezones.cpp 2005-11-22 23:49:33.850938000 -0500
@@ -376,13 +376,22 @@
if (!f.open(IO_ReadOnly))
{
kdDebug() << "Can't open " << f.name() << endl;
+#if defined(SOLARIS) || defined(USE_SOLARIS)
+ m_zoneinfoDir = "/usr/share/lib/zoneinfo";
+ f.setName(m_zoneinfoDir + "/tab/zone_sun.tab");
+#else
m_zoneinfoDir = "/usr/lib/zoneinfo";
f.setName(m_zoneinfoDir + "/zone.tab");
+#endif
if (!f.open(IO_ReadOnly))
{
kdDebug() << "Can't open " << f.name() << endl;
m_zoneinfoDir = ::getenv("TZDIR");
+#if defined(SOLARIS) || defined(USE_SOLARIS)
+ f.setName(m_zoneinfoDir + "/tab/zone_sun.tab");
+#endif
f.setName(m_zoneinfoDir + "/zone.tab");
+#endif
if (m_zoneinfoDir.isEmpty() || !f.open(IO_ReadOnly))
{
kdDebug() << "Can't open " << f.name() << endl;
@@ -396,8 +405,7 @@
m_zoneinfoDir = "/usr/share/lib/zoneinfo";
KTempFile temp;
KShellProcess reader;
- reader << "/bin/grep" << "-h" << "^Zone" << m_zoneinfoDir << \
"/src/*" << temp.name() << "|" <<
- "/bin/awk" << "'{print \"??\\t+9999+99999\\t\" $2}'";
+ reader << "/usr/bin/egrep" << " -h" << " \"^Zone\" " << \
m_zoneinfoDir << "/src/* " << " | " << "/usr/bin/nawk " << "'{ print \
\"??\\t+9999+99999\\t\" $2 }' > " << temp.name();
// Note the use of blocking here...it is a trivial amount of data!
temp.close();
reader.start(KProcess::Block);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic