diff --git a/src/zscanner/error.c b/src/zscanner/error.c
index 9f65d7066e18935158acd2c732c78c703c9ac3d9..ccc43075769704332d0e0b2e0ce60b2a91bcc2f3 100644
--- a/src/zscanner/error.c
+++ b/src/zscanner/error.c
@@ -29,13 +29,15 @@ typedef struct {
 const err_table_t err_msgs[] = {
 	ERR_ITEM( ZS_OK, "ok" ),
 
+	ERR_ITEM( ZS_SYSTEM,
+	          "system error" ),
 	ERR_ITEM( ZS_FILE_OPEN,
 	          "file open error" ),
 	ERR_ITEM( ZS_FILE_PATH,
 	          "file path error" ),
 	ERR_ITEM( ZS_FILE_FSTAT,
 	          "fstat error" ),
-	ERR_ITEM( ZS_FILE_DIRECTORY,
+	ERR_ITEM( ZS_FILE_DIR,
 	          "not zone file but directory" ),
 	ERR_ITEM( ZS_FILE_MMAP,
 	          "file mmap error" ),
diff --git a/src/zscanner/error.h b/src/zscanner/error.h
index 74f98dcdf7866bbb28050ffd7f71ecde228a3a59..247bcea31f606f24f4848438dc803c79153467c6 100644
--- a/src/zscanner/error.h
+++ b/src/zscanner/error.h
@@ -27,10 +27,11 @@
 enum err_codes {
 	ZS_OK = 0,
 
-	ZS_FILE_OPEN = -1000,
+	ZS_SYSTEM = -1000,
+	ZS_FILE_OPEN,
 	ZS_FILE_PATH,
 	ZS_FILE_FSTAT,
-	ZS_FILE_DIRECTORY,
+	ZS_FILE_DIR,
 	ZS_FILE_MMAP,
 	ZS_DOS_NEWLINE,
 	ZS_UNCOVERED_STATE,
diff --git a/src/zscanner/scanner.c.g2 b/src/zscanner/scanner.c.g2
index 9cee51c9a2c4c98c81b6cf203eef568e852f7aea..1814ab63595c03a914e7e3114073da10a7c52239 100644
--- a/src/zscanner/scanner.c.g2
+++ b/src/zscanner/scanner.c.g2
@@ -73109,6 +73109,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
+	// Getting OS page size.
+	page_size = sysconf(_SC_PAGESIZE);
+	if (page_size <= 0) {
+		ERR(ZS_SYSTEM);
+		return -1;
+	}
+
 	// Copying file name.
 	s->file.name = strdup(file_name);
 
@@ -73133,9 +73140,6 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
-	// Getting OS page size.
-	page_size = sysconf(_SC_PAGESIZE);
-
 	// Getting file information.
 	if (fstat(s->file.descriptor, &file_stat) == -1) {
 		ERR(ZS_FILE_FSTAT);
@@ -73146,7 +73150,7 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 
 	// Check for directory.
 	if (S_ISDIR(file_stat.st_mode)) {
-		ERR(ZS_FILE_DIRECTORY);
+		ERR(ZS_FILE_DIR);
 		close(s->file.descriptor);
 		free(s->file.name);
 		return -1;
diff --git a/src/zscanner/scanner.c.t0 b/src/zscanner/scanner.c.t0
index b6d6f4de899f78583938b40c1106f82a02529240..1b6e8248b81a6bf66eeaec5b3b40f62815328828 100644
--- a/src/zscanner/scanner.c.t0
+++ b/src/zscanner/scanner.c.t0
@@ -7430,6 +7430,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
+	// Getting OS page size.
+	page_size = sysconf(_SC_PAGESIZE);
+	if (page_size <= 0) {
+		ERR(ZS_SYSTEM);
+		return -1;
+	}
+
 	// Copying file name.
 	s->file.name = strdup(file_name);
 
@@ -7454,9 +7461,6 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
-	// Getting OS page size.
-	page_size = sysconf(_SC_PAGESIZE);
-
 	// Getting file information.
 	if (fstat(s->file.descriptor, &file_stat) == -1) {
 		ERR(ZS_FILE_FSTAT);
@@ -7467,7 +7471,7 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 
 	// Check for directory.
 	if (S_ISDIR(file_stat.st_mode)) {
-		ERR(ZS_FILE_DIRECTORY);
+		ERR(ZS_FILE_DIR);
 		close(s->file.descriptor);
 		free(s->file.name);
 		return -1;
diff --git a/src/zscanner/scanner.rl b/src/zscanner/scanner.rl
index e85d1b08630282eb85499a7b815c173e1f99139c..3a36dd4b3ed94f025d67aae0faec0e3adbad88a9 100644
--- a/src/zscanner/scanner.rl
+++ b/src/zscanner/scanner.rl
@@ -277,6 +277,13 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
+	// Getting OS page size.
+	page_size = sysconf(_SC_PAGESIZE);
+	if (page_size <= 0) {
+		ERR(ZS_SYSTEM);
+		return -1;
+	}
+
 	// Copying file name.
 	s->file.name = strdup(file_name);
 
@@ -301,9 +308,6 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 		return -1;
 	}
 
-	// Getting OS page size.
-	page_size = sysconf(_SC_PAGESIZE);
-
 	// Getting file information.
 	if (fstat(s->file.descriptor, &file_stat) == -1) {
 		ERR(ZS_FILE_FSTAT);
@@ -314,7 +318,7 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 
 	// Check for directory.
 	if (S_ISDIR(file_stat.st_mode)) {
-		ERR(ZS_FILE_DIRECTORY);
+		ERR(ZS_FILE_DIR);
 		close(s->file.descriptor);
 		free(s->file.name);
 		return -1;
diff --git a/src/zscanner/tests/data/06-3_INCLUDE.out b/src/zscanner/tests/data/06-3_INCLUDE.out
index 8a5289b0bca31bf9482c21fa6ba07290f39d947d..ce2cc25276c405b8b242b3e53c62079e97bdcabd 100644
--- a/src/zscanner/tests/data/06-3_INCLUDE.out
+++ b/src/zscanner/tests/data/06-3_INCLUDE.out
@@ -1,2 +1,2 @@
-ERROR=ZS_FILE_DIRECTORY
+ERROR=ZS_FILE_DIR
 ------