Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
John McEleney
/
mailutils
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
391d042a
...
391d042a579a6f9894625f18297e3282f7e23b13
authored
2001-06-14 23:20:39 +0000
by
Sam Roberts
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
GNU indented
1 parent
c93c658e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
98 additions
and
73 deletions
examples/addr.c
examples/addr.c
View file @
391d042
...
...
@@ -4,127 +4,152 @@
#define EPARSE ENOENT
static
const
char
*
err_name
(
int
e
)
static
const
char
*
err_name
(
int
e
)
{
struct
{
int
e
;
const
char
*
s
;
}
map
[]
=
{
struct
{
int
e
;
const
char
*
s
;
}
map
[]
=
{
#define E(e) { e, #e },
E
(
ENOENT
)
E
(
EINVAL
)
E
(
ENOMEM
)
E
(
EPARSE
)
E
(
EINVAL
)
E
(
ENOMEM
)
#undef E
{
0
,
NULL
}
};
static
char
s
[
sizeof
(
int
)
*
8
+
3
];
int
i
;
for
(
i
=
0
;
map
[
i
].
s
;
i
++
)
{
if
(
map
[
i
].
e
==
e
)
return
map
[
i
].
s
;
{
0
,
NULL
}
};
static
char
s
[
sizeof
(
int
)
*
8
+
3
];
int
i
;
for
(
i
=
0
;
map
[
i
].
s
;
i
++
)
{
if
(
map
[
i
].
e
==
e
)
return
map
[
i
].
s
;
}
sprintf
(
s
,
"[%d]"
,
e
);
sprintf
(
s
,
"[%d]"
,
e
);
return
s
;
return
s
;
}
static
int
parse
(
const
char
*
str
)
static
int
parse
(
const
char
*
str
)
{
size_t
no
=
0
;
size_t
pcount
=
0
;
int
status
;
size_t
no
=
0
;
size_t
pcount
=
0
;
int
status
;
char
buf
[
BUFSIZ
];
char
buf
[
BUFSIZ
];
address_t
address
=
NULL
;
address_t
address
=
NULL
;
status
=
address_create
(
&
address
,
str
);
status
=
address_create
(
&
address
,
str
);
address_get_count
(
address
,
&
pcount
);
address_get_count
(
address
,
&
pcount
);
if
(
status
)
{
printf
(
"%s=> error %s
\n\n
"
,
str
,
err_name
(
status
));
return
0
;
}
else
{
printf
(
"%s=> pcount %d
\n
"
,
str
,
pcount
);
if
(
status
)
{
printf
(
"%s=> error %s
\n\n
"
,
str
,
err_name
(
status
));
return
0
;
}
else
{
printf
(
"%s=> pcount %d
\n
"
,
str
,
pcount
);
}
for
(
no
=
1
;
no
<=
pcount
;
no
++
)
{
size_t
got
=
0
;
int
isgroup
;
for
(
no
=
1
;
no
<=
pcount
;
no
++
)
{
size_t
got
=
0
;
int
isgroup
;
address_is_group
(
address
,
no
,
&
isgroup
);
address_is_group
(
address
,
no
,
&
isgroup
);
printf
(
"%d "
,
no
);
printf
(
"%d "
,
no
);
if
(
isgroup
)
{
address_get_personal
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
if
(
isgroup
)
{
address_get_personal
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
printf
(
"group <%s>
\n
"
,
buf
);
}
else
{
address_get_email
(
address
,
no
,
buf
,
sizeof
(
buf
),
0
);
printf
(
"group <%s>
\n
"
,
buf
);
}
else
{
address_get_email
(
address
,
no
,
buf
,
sizeof
(
buf
),
0
);
printf
(
"email <%s>
\n
"
,
buf
);
printf
(
"email <%s>
\n
"
,
buf
);
}
address_get_personal
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
address_get_personal
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
if
(
got
&&
!
isgroup
)
printf
(
" personal <%s>
\n
"
,
buf
);
if
(
got
&&
!
isgroup
)
printf
(
" personal <%s>
\n
"
,
buf
);
address_get_comments
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
address_get_comments
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
if
(
got
)
printf
(
" comments <%s>
\n
"
,
buf
);
if
(
got
)
printf
(
" comments <%s>
\n
"
,
buf
);
address_get_local_part
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
address_get_local_part
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
if
(
got
)
{
printf
(
" local-part <%s>"
,
buf
);
if
(
got
)
{
printf
(
" local-part <%s>"
,
buf
);
address_get_domain
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
address_get_domain
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
if
(
got
)
printf
(
" domain <%s>"
,
buf
);
if
(
got
)
printf
(
" domain <%s>"
,
buf
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
}
address_get_route
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
address_get_route
(
address
,
no
,
buf
,
sizeof
(
buf
),
&
got
);
if
(
got
)
printf
(
" route <%s>
\n
"
,
buf
);
if
(
got
)
printf
(
" route <%s>
\n
"
,
buf
);
}
address_destroy
(
&
address
);
address_destroy
(
&
address
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
return
0
;
return
0
;
}
static
int
parseinput
(
void
)
static
int
parseinput
(
void
)
{
char
buf
[
BUFSIZ
];
char
buf
[
BUFSIZ
];
while
(
fgets
(
buf
,
sizeof
(
buf
),
stdin
)
!=
0
)
{
buf
[
strlen
(
buf
)
-
1
]
=
0
;
parse
(
buf
);
while
(
fgets
(
buf
,
sizeof
(
buf
),
stdin
)
!=
0
)
{
buf
[
strlen
(
buf
)
-
1
]
=
0
;
parse
(
buf
);
}
return
0
;
return
0
;
}
int
main
(
int
argc
,
const
char
*
argv
[])
int
main
(
int
argc
,
const
char
*
argv
[])
{
argc
=
1
;
argc
=
1
;
if
(
!
argv
[
argc
])
{
return
parseinput
();
if
(
!
argv
[
argc
])
{
return
parseinput
();
}
for
(;
argv
[
argc
];
argc
++
)
{
if
(
strcmp
(
argv
[
argc
],
"-"
)
==
0
)
{
parseinput
();
}
else
{
parse
(
argv
[
argc
]);
for
(;
argv
[
argc
];
argc
++
)
{
if
(
strcmp
(
argv
[
argc
],
"-"
)
==
0
)
{
parseinput
();
}
else
{
parse
(
argv
[
argc
]);
}
}
return
0
;
return
0
;
}
...
...
Please
register
or
sign in
to post a comment