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
5cc65400
...
5cc65400cb88bb4554d1f7b7ca66bd49a90fa5bd
authored
2002-11-05 13:38:20 +0000
by
Sergey Poznyakoff
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
(mail_from0): New function shared between from.c and headers.c
1 parent
e7336cfd
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
82 deletions
mail/from.c
mail/from.c
View file @
5cc6540
...
...
@@ -27,92 +27,97 @@ mail_from (int argc, char **argv)
if
(
argc
>
1
)
return
util_msglist_command
(
mail_from
,
argc
,
argv
,
0
);
else
{
message_t
msg
;
header_t
hdr
=
NULL
;
envelope_t
env
;
attribute_t
attr
;
char
*
from
=
NULL
,
*
subj
=
NULL
,
*
fromp
,
*
subjp
;
int
froml
,
subjl
;
char
date
[
80
],
st
[
10
];
int
cols
=
util_getcols
()
-
6
;
int
cflag
;
size_t
m_size
=
0
,
m_lines
=
0
;
const
char
*
p
;
struct
tm
tm
;
mu_timezone
tz
;
if
(
util_get_message
(
mbox
,
cursor
,
&
msg
,
1
))
return
1
;
return
mail_from0
(
cursor
,
1
);
return
1
;
}
message_get_header
(
msg
,
&
hdr
);
if
(
header_aget_value
(
hdr
,
MU_HEADER_FROM
,
&
from
)
==
0
)
int
mail_from0
(
int
msgno
,
int
verbose
)
{
message_t
msg
;
header_t
hdr
=
NULL
;
envelope_t
env
;
attribute_t
attr
;
char
*
from
=
NULL
,
*
subj
=
NULL
,
*
fromp
,
*
subjp
;
int
froml
,
subjl
;
char
date
[
80
],
st
[
10
];
int
cols
=
util_getcols
()
-
6
;
int
cflag
;
size_t
m_size
=
0
,
m_lines
=
0
;
const
char
*
p
;
struct
tm
tm
;
mu_timezone
tz
;
if
(
util_get_message
(
mbox
,
msgno
,
&
msg
,
MSG_NODELETED
|
(
verbose
?
0
:
MSG_SILENT
)))
return
1
;
message_get_header
(
msg
,
&
hdr
);
if
(
header_aget_value
(
hdr
,
MU_HEADER_FROM
,
&
from
)
==
0
)
{
address_t
address
=
NULL
;
if
(
address_create
(
&
address
,
from
)
==
0
)
{
address_t
address
=
NULL
;
if
(
address_create
(
&
address
,
from
)
==
0
)
char
name
[
128
];
size_t
len
=
strlen
(
from
);
*
name
=
'\0'
;
address_get_personal
(
address
,
1
,
name
,
sizeof
name
,
NULL
);
if
(
*
name
&&
len
)
{
char
name
[
128
];
size_t
len
=
strlen
(
from
);
*
name
=
'\0'
;
address_get_personal
(
address
,
1
,
name
,
sizeof
name
,
NULL
);
if
(
*
name
&&
len
)
{
strncpy
(
from
,
name
,
len
-
1
);
from
[
len
-
1
]
=
'\0'
;
}
else
address_get_email
(
address
,
1
,
from
,
strlen
(
from
),
NULL
);
address_destroy
(
&
address
);
strncpy
(
from
,
name
,
len
-
1
);
from
[
len
-
1
]
=
'\0'
;
}
else
address_get_email
(
address
,
1
,
from
,
strlen
(
from
),
NULL
);
address_destroy
(
&
address
);
}
header_aget_value
(
hdr
,
MU_HEADER_SUBJECT
,
&
subj
);
message_get_attribute
(
msg
,
&
attr
);
if
(
attribute_is_userflag
(
attr
,
MAIL_ATTRIBUTE_MBOXED
))
cflag
=
'M'
;
else
if
(
attribute_is_userflag
(
attr
,
MAIL_ATTRIBUTE_SAVED
))
cflag
=
'*'
;
else
if
(
attribute_is_userflag
(
attr
,
MAIL_ATTRIBUTE_TAGGED
))
cflag
=
'T'
;
else
if
(
attribute_is_read
(
attr
))
cflag
=
'R'
;
else
if
(
attribute_is_seen
(
attr
))
cflag
=
'U'
;
else
if
(
attribute_is_recent
(
attr
))
cflag
=
'N'
;
else
cflag
=
' '
;
message_get_envelope
(
msg
,
&
env
);
envelope_date
(
env
,
date
,
sizeof
(
date
),
NULL
);
p
=
date
;
if
(
mu_parse_ctime_date_time
(
&
p
,
&
tm
,
&
tz
)
==
0
)
strftime
(
date
,
sizeof
(
date
),
"%a %b %e %H:%M"
,
&
tm
);
message_size
(
msg
,
&
m_size
);
message_lines
(
msg
,
&
m_lines
);
snprintf
(
st
,
sizeof
(
st
),
"%3d/%-5d"
,
m_lines
,
m_size
);
/* The "From" field will take a third of the screen.
Subject will take the rest.
FIXME: This is not quite correct that we use fixed sizes
18, 16 for the other fields.
*/
froml
=
cols
/
3
;
subjl
=
cols
-
froml
-
strlen
(
st
)
-
strlen
(
date
);
fromp
=
from
?
from
:
""
;
subjp
=
subj
?
subj
:
fromp
;
fprintf
(
ofile
,
"%c%c%4d %-18.18s %-16.16s %s %.*s
\n
"
,
cursor
==
realcursor
?
'>'
:
' '
,
cflag
,
cursor
,
fromp
,
date
,
st
,
(
subjl
<
0
)
?
0
:
subjl
,
subjp
);
free
(
from
);
free
(
subj
);
return
0
;
}
return
1
;
header_aget_value
(
hdr
,
MU_HEADER_SUBJECT
,
&
subj
);
message_get_attribute
(
msg
,
&
attr
);
if
(
attribute_is_userflag
(
attr
,
MAIL_ATTRIBUTE_MBOXED
))
cflag
=
'M'
;
else
if
(
attribute_is_userflag
(
attr
,
MAIL_ATTRIBUTE_SAVED
))
cflag
=
'*'
;
else
if
(
attribute_is_userflag
(
attr
,
MAIL_ATTRIBUTE_TAGGED
))
cflag
=
'T'
;
else
if
(
attribute_is_read
(
attr
))
cflag
=
'R'
;
else
if
(
attribute_is_seen
(
attr
))
cflag
=
'U'
;
else
if
(
attribute_is_recent
(
attr
))
cflag
=
'N'
;
else
cflag
=
' '
;
message_get_envelope
(
msg
,
&
env
);
envelope_date
(
env
,
date
,
sizeof
(
date
),
NULL
);
p
=
date
;
if
(
mu_parse_ctime_date_time
(
&
p
,
&
tm
,
&
tz
)
==
0
)
strftime
(
date
,
sizeof
(
date
),
"%a %b %e %H:%M"
,
&
tm
);
message_size
(
msg
,
&
m_size
);
message_lines
(
msg
,
&
m_lines
);
snprintf
(
st
,
sizeof
(
st
),
"%3d/%-5d"
,
m_lines
,
m_size
);
/* The "From" field will take a third of the screen.
Subject will take the rest.
FIXME: This is not quite correct that we use fixed sizes
18, 16 for the other fields.
*/
froml
=
cols
/
3
;
subjl
=
cols
-
froml
-
strlen
(
st
)
-
strlen
(
date
);
fromp
=
from
?
from
:
""
;
subjp
=
subj
?
subj
:
fromp
;
fprintf
(
ofile
,
"%c%c%4d %-18.18s %-16.16s %s %.*s
\n
"
,
msgno
==
realcursor
?
'>'
:
' '
,
cflag
,
msgno
,
fromp
,
date
,
st
,
(
subjl
<
0
)
?
0
:
subjl
,
subjp
);
free
(
from
);
free
(
subj
);
return
0
;
}
...
...
Please
register
or
sign in
to post a comment