Skip to content

Commit ec732de

Browse files
committed
Refactoring.
1 parent 395d0d0 commit ec732de

File tree

3 files changed

+39
-38
lines changed

3 files changed

+39
-38
lines changed

examples/regex/regex.f90

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ program main
1111
character(len=*), parameter :: STRING = 'fortran'
1212
character(len=*), parameter :: PATTERN = '^[:lower:]*'
1313

14-
character(len=32), target :: err
14+
character(len=32), target :: err_str
1515
integer :: rc
16-
integer(kind=i8) :: sz
16+
integer(kind=c_size_t) :: sz
1717
type(c_regex_t) :: regex
1818

1919
! Compile regular expression.
@@ -25,27 +25,27 @@ program main
2525
if (rc /= 0) then
2626
sz = c_regerror(errcode = rc, &
2727
preg = regex, &
28-
errbuf = c_loc(err), &
29-
errbuf_size = len(err, kind=i8))
28+
errbuf = c_loc(err_str), &
29+
errbuf_size = len(err_str, kind=c_size_t))
3030

3131
if (sz > 0) then
32-
print '(2a)', 'regcomp(): ', trim(err)
32+
print '("regcomp(): ", a)', trim(err_str)
3333
else
3434
call c_perror('regerror()' // c_null_char)
3535
end if
3636
end if
3737

38-
! Execute regular expression. Returns `0`, if pattern matches.
38+
! Execute regular expression. Returns 0 if pattern matches.
3939
rc = c_regexec(preg = regex, &
4040
string = STRING // c_null_char, &
41-
nmatch = int(0, kind=i8), &
41+
nmatch = 0_c_size_t, &
4242
pmatch = c_null_ptr, &
4343
eflags = 0)
4444

4545
if (rc == 0) then
46-
print '(a)', 'Pattern matches!'
46+
print '("Pattern matches!")'
4747
else if (rc == REG_NOMATCH) then
48-
print '(a)', 'Pattern does not match.'
48+
print '("Pattern does not match.")'
4949
end if
5050

5151
! Does not free `regex` itself.

src/unix_termios.F90

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,6 @@ module unix_termios
77

88
#if defined (__linux__)
99

10-
integer, parameter, public :: c_cc_t = c_unsigned_char
11-
integer, parameter, public :: c_speed_t = c_unsigned_int
12-
integer, parameter, public :: c_tcflag_t = c_unsigned_int
13-
14-
integer, parameter, public :: NCCS = 32
15-
16-
type, bind(c), public :: c_termios
17-
integer(kind=c_tcflag_t) :: c_iflag = 0_c_tcflag_t
18-
integer(kind=c_tcflag_t) :: c_oflag = 0_c_tcflag_t
19-
integer(kind=c_tcflag_t) :: c_cflag = 0_c_tcflag_t
20-
integer(kind=c_tcflag_t) :: c_lflag = 0_c_tcflag_t
21-
integer(kind=c_cc_t) :: c_line = 0_c_cc_t
22-
integer(kind=c_cc_t) :: c_cc(0:NCCS - 1) = 0_c_cc_t
23-
integer(kind=c_speed_t) :: c_ispeed = 0_c_speed_t
24-
integer(kind=c_speed_t) :: c_ospeed = 0_c_speed_t
25-
end type c_termios
26-
2710
integer(kind=c_int), parameter, public :: VINTR = 0
2811
integer(kind=c_int), parameter, public :: VQUIT = 1
2912
integer(kind=c_int), parameter, public :: VERASE = 2
@@ -156,24 +139,21 @@ module unix_termios
156139
integer(kind=c_int), parameter, public :: TIOCMBIS = int(z'5416')
157140
integer(kind=c_int), parameter, public :: TIOCMSET = int(z'5418')
158141

159-
#elif defined (__FreeBSD__)
160-
161-
integer, parameter, public :: c_cc_t = c_unsigned_char
162-
integer, parameter, public :: c_speed_t = c_int
163-
integer, parameter, public :: c_tcflag_t = c_int
164-
165-
integer, parameter, public :: NCCS = 20
142+
integer, parameter, public :: NCCS = 32
166143

167144
type, bind(c), public :: c_termios
168145
integer(kind=c_tcflag_t) :: c_iflag = 0_c_tcflag_t
169146
integer(kind=c_tcflag_t) :: c_oflag = 0_c_tcflag_t
170147
integer(kind=c_tcflag_t) :: c_cflag = 0_c_tcflag_t
171148
integer(kind=c_tcflag_t) :: c_lflag = 0_c_tcflag_t
149+
integer(kind=c_cc_t) :: c_line = 0_c_cc_t
172150
integer(kind=c_cc_t) :: c_cc(0:NCCS - 1) = 0_c_cc_t
173151
integer(kind=c_speed_t) :: c_ispeed = 0_c_speed_t
174152
integer(kind=c_speed_t) :: c_ospeed = 0_c_speed_t
175153
end type c_termios
176154

155+
#elif defined (__FreeBSD__)
156+
177157
integer(kind=c_int), parameter, public :: VEOF = 0 ! ICANON
178158
integer(kind=c_int), parameter, public :: VEOL = 1 ! ICANON
179159
integer(kind=c_int), parameter, public :: VEOL2 = 2 ! ICANON together with IEXTEN
@@ -315,6 +295,18 @@ module unix_termios
315295
integer(kind=c_int), parameter, public :: TIOCSTART = int(z'2000746e')
316296
integer(kind=c_int), parameter, public :: TIOCSTOP = int(z'2000746f')
317297

298+
integer, parameter, public :: NCCS = 20
299+
300+
type, bind(c), public :: c_termios
301+
integer(kind=c_tcflag_t) :: c_iflag = 0_c_tcflag_t
302+
integer(kind=c_tcflag_t) :: c_oflag = 0_c_tcflag_t
303+
integer(kind=c_tcflag_t) :: c_cflag = 0_c_tcflag_t
304+
integer(kind=c_tcflag_t) :: c_lflag = 0_c_tcflag_t
305+
integer(kind=c_cc_t) :: c_cc(0:NCCS - 1) = 0_c_cc_t
306+
integer(kind=c_speed_t) :: c_ispeed = 0_c_speed_t
307+
integer(kind=c_speed_t) :: c_ospeed = 0_c_speed_t
308+
end type c_termios
309+
318310
#endif
319311

320312
public :: c_cfgetispeed

src/unix_types.F90

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,43 +13,52 @@ module unix_types
1313
integer, parameter, public :: c_uint32_t = c_int32_t
1414
integer, parameter, public :: c_uint64_t = c_int64_t
1515

16-
integer, parameter, public :: c_in_addr_t = c_uint32_t
17-
integer, parameter, public :: c_key_t = c_long
18-
integer, parameter, public :: c_pid_t = c_int32_t
19-
2016
#if defined (__linux__)
2117

2218
integer, parameter, public :: c_blkcnt_t = c_int64_t
2319
integer, parameter, public :: c_blksize_t = c_long
20+
integer, parameter, public :: c_cc_t = c_unsigned_char
2421
integer, parameter, public :: c_clockid_t = c_int32_t
2522
integer, parameter, public :: c_dev_t = c_unsigned_long
2623
integer, parameter, public :: c_gid_t = c_uint32_t
24+
integer, parameter, public :: c_in_addr_t = c_uint32_t
2725
integer, parameter, public :: c_ino_t = c_unsigned_long
26+
integer, parameter, public :: c_key_t = c_long
2827
integer, parameter, public :: c_mode_t = c_uint32_t
2928
integer, parameter, public :: c_mqd_t = c_int
3029
integer, parameter, public :: c_nlink_t = c_unsigned_long
3130
integer, parameter, public :: c_off_t = c_long
31+
integer, parameter, public :: c_pid_t = c_int32_t
3232
integer, parameter, public :: c_socklen_t = c_int64_t
33+
integer, parameter, public :: c_speed_t = c_unsigned_int
3334
integer, parameter, public :: c_suseconds_t = c_int
35+
integer, parameter, public :: c_tcflag_t = c_unsigned_int
3436
integer, parameter, public :: c_time_t = c_long
3537
integer, parameter, public :: c_uid_t = c_uint32_t
3638
integer, parameter, public :: c_useconds_t = c_int32_t
3739

3840
#elif defined (__FreeBSD__)
3941

42+
4043
integer, parameter, public :: c_blkcnt_t = c_int64_t
4144
integer, parameter, public :: c_blksize_t = c_int32_t
45+
integer, parameter, public :: c_cc_t = c_unsigned_char
4246
integer, parameter, public :: c_clockid_t = c_int32_t
4347
integer, parameter, public :: c_dev_t = c_uint64_t
4448
integer, parameter, public :: c_fflags_t = c_uint32_t
4549
integer, parameter, public :: c_gid_t = c_uint32_t
50+
integer, parameter, public :: c_in_addr_t = c_uint32_t
4651
integer, parameter, public :: c_ino_t = c_uint64_t
47-
integer, parameter, public :: c_mqd_t = c_long
52+
integer, parameter, public :: c_key_t = c_long
4853
integer, parameter, public :: c_mode_t = c_uint16_t
54+
integer, parameter, public :: c_mqd_t = c_long
4955
integer, parameter, public :: c_nlink_t = c_uint64_t
5056
integer, parameter, public :: c_off_t = c_int64_t
57+
integer, parameter, public :: c_pid_t = c_int32_t
5158
integer, parameter, public :: c_socklen_t = c_size_t
59+
integer, parameter, public :: c_speed_t = c_int
5260
integer, parameter, public :: c_suseconds_t = c_long
61+
integer, parameter, public :: c_tcflag_t = c_int
5362
integer, parameter, public :: c_time_t = c_int64_t
5463
integer, parameter, public :: c_uid_t = c_uint32_t
5564
integer, parameter, public :: c_useconds_t = c_unsigned_int

0 commit comments

Comments
 (0)