@@ -1381,73 +1381,66 @@ int get_timezones(char ***ret) {
13811381 return 0 ;
13821382}
13831383
1384- bool timezone_is_valid (const char * name , int log_level ) {
1384+ int verify_timezone (const char * name , int log_level ) {
13851385 bool slash = false;
13861386 const char * p , * t ;
13871387 _cleanup_close_ int fd = -1 ;
13881388 char buf [4 ];
13891389 int r ;
13901390
13911391 if (isempty (name ))
1392- return false ;
1392+ return - EINVAL ;
13931393
13941394 /* Always accept "UTC" as valid timezone, since it's the fallback, even if user has no timezones installed. */
13951395 if (streq (name , "UTC" ))
1396- return true ;
1396+ return 0 ;
13971397
13981398 if (name [0 ] == '/' )
1399- return false ;
1399+ return - EINVAL ;
14001400
14011401 for (p = name ; * p ; p ++ ) {
14021402 if (!(* p >= '0' && * p <= '9' ) &&
14031403 !(* p >= 'a' && * p <= 'z' ) &&
14041404 !(* p >= 'A' && * p <= 'Z' ) &&
14051405 !IN_SET (* p , '-' , '_' , '+' , '/' ))
1406- return false ;
1406+ return - EINVAL ;
14071407
14081408 if (* p == '/' ) {
14091409
14101410 if (slash )
1411- return false ;
1411+ return - EINVAL ;
14121412
14131413 slash = true;
14141414 } else
14151415 slash = false;
14161416 }
14171417
14181418 if (slash )
1419- return false ;
1419+ return - EINVAL ;
14201420
14211421 if (p - name >= PATH_MAX )
1422- return false ;
1422+ return - ENAMETOOLONG ;
14231423
14241424 t = strjoina ("/usr/share/zoneinfo/" , name );
14251425
14261426 fd = open (t , O_RDONLY |O_CLOEXEC );
1427- if (fd < 0 ) {
1428- log_full_errno (log_level , errno , "Failed to open timezone file '%s': %m" , t );
1429- return false;
1430- }
1427+ if (fd < 0 )
1428+ return log_full_errno (log_level , errno , "Failed to open timezone file '%s': %m" , t );
14311429
14321430 r = fd_verify_regular (fd );
1433- if (r < 0 ) {
1434- log_full_errno (log_level , r , "Timezone file '%s' is not a regular file: %m" , t );
1435- return false;
1436- }
1431+ if (r < 0 )
1432+ return log_full_errno (log_level , r , "Timezone file '%s' is not a regular file: %m" , t );
14371433
14381434 r = loop_read_exact (fd , buf , 4 , false);
1439- if (r < 0 ) {
1440- log_full_errno (log_level , r , "Failed to read from timezone file '%s': %m" , t );
1441- return false;
1442- }
1435+ if (r < 0 )
1436+ return log_full_errno (log_level , r , "Failed to read from timezone file '%s': %m" , t );
14431437
14441438 /* Magic from tzfile(5) */
1445- if (memcmp (buf , "TZif" , 4 ) != 0 ) {
1446- log_full (log_level , "Timezone file '%s' has wrong magic bytes" , t );
1447- return false;
1448- }
1439+ if (memcmp (buf , "TZif" , 4 ) != 0 )
1440+ return log_full_errno (log_level , SYNTHETIC_ERRNO (EIO ),
1441+ "Timezone file '%s' has wrong magic bytes" , t );
14491442
1450- return true ;
1443+ return 0 ;
14511444}
14521445
14531446bool clock_boottime_supported (void ) {
0 commit comments