/[LeafOK_CVS]/lbbs/src/test_file_loader.c
ViewVC logotype

Annotation of /lbbs/src/test_file_loader.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.18 - (hide annotations)
Sat Jan 3 10:27:14 2026 UTC (2 months, 1 week ago) by sysadm
Branch: MAIN
CVS Tags: HEAD
Changes since 1.17: +1 -1 lines
Content type: text/x-csrc
Update copyright info

1 sysadm 1.10 /* SPDX-License-Identifier: GPL-3.0-or-later */
2     /*
3     * test_file_loader
4     * - tester for shared memory based file loader
5     *
6 sysadm 1.18 * Copyright (C) 2004-2026 Leaflet <leaflet@leafok.com>
7 sysadm 1.10 */
8 sysadm 1.1
9 sysadm 1.13 #ifdef HAVE_CONFIG_H
10     #include "config.h"
11     #endif
12    
13 sysadm 1.1 #include "file_loader.h"
14 sysadm 1.9 #include "log.h"
15     #include <errno.h>
16 sysadm 1.14 #include <libgen.h>
17 sysadm 1.1 #include <stdio.h>
18 sysadm 1.14 #include <string.h>
19 sysadm 1.1 #include <unistd.h>
20    
21     const char *files[] = {
22     "../data/welcome.txt",
23     "../data/copyright.txt",
24     "../data/register.txt",
25     "../data/license.txt",
26 sysadm 1.2 "../data/login_error.txt",
27     "../data/read_help.txt"};
28 sysadm 1.1
29 sysadm 1.2 int files_cnt = 6;
30 sysadm 1.1
31     int main(int argc, char *argv[])
32     {
33     int i;
34 sysadm 1.14 void *p_shm;
35 sysadm 1.3 size_t data_len;
36     long line_total;
37     const void *p_data;
38     const long *p_line_offsets;
39 sysadm 1.1
40 sysadm 1.14 if (log_begin("../log/bbsd.log", "../log/error.log") < 0)
41 sysadm 1.5 {
42 sysadm 1.14 printf("Open log error\n");
43 sysadm 1.5 return -1;
44     }
45    
46 sysadm 1.14 log_common_redir(STDOUT_FILENO);
47     log_error_redir(STDERR_FILENO);
48 sysadm 1.1
49     printf("Testing #1\n");
50    
51 sysadm 1.2 for (i = 0; i < files_cnt; i++)
52 sysadm 1.1 {
53 sysadm 1.5 if (load_file(files[i]) < 0)
54 sysadm 1.1 {
55     printf("Load file %s error\n", files[i]);
56     }
57     }
58    
59 sysadm 1.2 for (i = 0; i < files_cnt; i++)
60 sysadm 1.1 {
61 sysadm 1.5 if ((p_shm = get_file_shm_readonly(files[i], &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)
62 sysadm 1.1 {
63 sysadm 1.2 printf("Get file shm %s error\n", files[i]);
64 sysadm 1.1 }
65     else
66     {
67 sysadm 1.3 printf("File: %s size: %ld lines: %ld\n", files[i], data_len, line_total);
68 sysadm 1.4
69     for (int j = 0; j < line_total; j++)
70     {
71     printf("Line %d: %ld ~ %ld\n", j, p_line_offsets[j], p_line_offsets[j + 1]);
72     }
73 sysadm 1.5
74     if (detach_file_shm(p_shm) < 0)
75     {
76 sysadm 1.17 log_error("detach_file_shm(%s) error", files[i]);
77 sysadm 1.5 }
78 sysadm 1.1 }
79     }
80    
81 sysadm 1.2 printf("Testing #2\n");
82    
83     for (i = 0; i < files_cnt; i++)
84 sysadm 1.1 {
85 sysadm 1.5 if (unload_file(files[i]) < 0)
86 sysadm 1.1 {
87     printf("Unload file %s error\n", files[i]);
88     }
89     }
90    
91     for (i = 0; i < files_cnt; i++)
92     {
93 sysadm 1.5 if (load_file(files[i]) < 0)
94 sysadm 1.1 {
95     printf("Load file %s error\n", files[i]);
96     }
97     }
98    
99     printf("Testing #3\n");
100    
101     for (i = 0; i < files_cnt; i++)
102     {
103 sysadm 1.2 if (i % 2 == 0)
104 sysadm 1.1 {
105 sysadm 1.5 if (unload_file(files[i]) < 0)
106 sysadm 1.2 {
107     printf("Unload file %s error\n", files[i]);
108     }
109 sysadm 1.1 }
110 sysadm 1.2 }
111    
112     for (i = 0; i < files_cnt; i++)
113     {
114     if (i % 2 != 0)
115 sysadm 1.1 {
116 sysadm 1.5 if ((p_shm = get_file_shm_readonly(files[i], &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)
117 sysadm 1.2 {
118     printf("Get file shm %s error\n", files[i]);
119     }
120     else
121     {
122 sysadm 1.3 printf("File: %s size: %ld lines: %ld\n", files[i], data_len, line_total);
123 sysadm 1.5
124     if (detach_file_shm(p_shm) < 0)
125     {
126 sysadm 1.17 log_error("detach_file_shm(%s) error", files[i]);
127 sysadm 1.5 }
128 sysadm 1.2 }
129 sysadm 1.1 }
130     }
131    
132     log_end();
133    
134     return 0;
135     }

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1