* _user_{get|set}_tzfilename() can now be used with NULL filename pointers
in case one just want to get or set the timezone. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31370 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -297,18 +297,18 @@ _user_set_tzfilename(const char *filename, size_t length, bool isGMT)
|
|||||||
if (geteuid() != 0)
|
if (geteuid() != 0)
|
||||||
return B_NOT_ALLOWED;
|
return B_NOT_ALLOWED;
|
||||||
|
|
||||||
if (!IS_USER_ADDRESS(filename)
|
if (filename != NULL && length > 0) {
|
||||||
|| filename == NULL
|
if (!IS_USER_ADDRESS(filename)
|
||||||
|| user_strlcpy(sTimezoneFilename, filename,
|
|| user_strlcpy(sTimezoneFilename, filename, B_PATH_NAME_LENGTH) < 0)
|
||||||
B_PATH_NAME_LENGTH) < B_OK)
|
return B_BAD_ADDRESS;
|
||||||
return B_BAD_ADDRESS;
|
}
|
||||||
|
|
||||||
sIsGMT = isGMT;
|
sIsGMT = isGMT;
|
||||||
|
|
||||||
if (wasGMT != sIsGMT) {
|
if (wasGMT != sIsGMT) {
|
||||||
arch_rtc_set_system_time_offset(sRealTimeData,
|
arch_rtc_set_system_time_offset(sRealTimeData,
|
||||||
arch_rtc_get_system_time_offset(sRealTimeData) + (((sIsGMT) ? 1 : -1)
|
arch_rtc_get_system_time_offset(sRealTimeData)
|
||||||
* sTimezoneOffset));
|
+ (sIsGMT ? 1 : -1) * sTimezoneOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@@ -316,12 +316,19 @@ _user_set_tzfilename(const char *filename, size_t length, bool isGMT)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
_user_get_tzfilename(char *filename, size_t length, bool *_isGMT)
|
_user_get_tzfilename(char *userFilename, size_t length, bool *_userIsGMT)
|
||||||
{
|
{
|
||||||
if (filename == NULL || _isGMT == NULL
|
if ((userFilename == NULL || length == 0) && _userIsGMT == NULL)
|
||||||
|| !IS_USER_ADDRESS(filename) || !IS_USER_ADDRESS(_isGMT)
|
return B_BAD_VALUE;
|
||||||
|| user_strlcpy(filename, sTimezoneFilename, length) < B_OK
|
|
||||||
|| user_memcpy(_isGMT, &sIsGMT, sizeof(bool)) < B_OK)
|
if (userFilename != NULL
|
||||||
|
&& (!IS_USER_ADDRESS(userFilename)
|
||||||
|
|| user_strlcpy(userFilename, sTimezoneFilename, length) < 0))
|
||||||
|
return B_BAD_ADDRESS;
|
||||||
|
|
||||||
|
if (_userIsGMT != NULL
|
||||||
|
&& (!IS_USER_ADDRESS(_userIsGMT)
|
||||||
|
|| user_memcpy(_userIsGMT, &sIsGMT, sizeof(bool)) != B_OK))
|
||||||
return B_BAD_ADDRESS;
|
return B_BAD_ADDRESS;
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|||||||
Reference in New Issue
Block a user