Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
19a19f1
Implement listing for extacted mime files with corresponding `-l` option
mkgrgis Apr 21, 2025
a7abf8f
Separate `MIME_is_diskfile_RFC822` and in-mem `MIME_is_file_RFC822`
mkgrgis Apr 22, 2025
291a80d
Clean `MIME_headers.c` by gcc warnings
mkgrgis Apr 23, 2025
d24d65f
Separate `UUENCODE_is_diskfile_uuencoded` and in-mem `UUENCODE_is_dis…
mkgrgis Apr 23, 2025
77a4dd2
Use `UUENCODE_is_diskfile_uuencoded`
mkgrgis Apr 23, 2025
5509025
Simplify `if..else..else` to `switch`
mkgrgis Apr 23, 2025
f1dd647
Remove trailing spaces and tabulations
mkgrgis Apr 23, 2025
07bc355
Remove unused by gcc warnings
mkgrgis Apr 23, 2025
a4d4d42
Refactor to `FILE` instead of `int` file descriptors, unify naming
mkgrgis Apr 23, 2025
0e2c8d2
Fix `result_f` unsuccessfully result condition
mkgrgis Apr 23, 2025
0184c0e
Unify naming, exclude file descriptors, use C stdlib only
mkgrgis Apr 23, 2025
142a9c4
Fix UUEcode code style
mkgrgis Apr 23, 2025
285d5fd
Exclude unnecessary header
mkgrgis Apr 23, 2025
f0fd3a5
Exclude unnecessary header
mkgrgis Apr 23, 2025
1495973
Unify MIME element creating to `MIME_element_add`
mkgrgis Apr 24, 2025
e169c11
Fix cannot open style
mkgrgis Apr 24, 2025
6bb4a33
Unify to `MIME_element_remove`
mkgrgis Apr 24, 2025
324fd33
Add a dynamic array for MIME elements
mkgrgis Apr 24, 2025
6c4b961
Refactor TNEF path, add `MIME_element_add_with_path`
mkgrgis Apr 24, 2025
c7fef0a
Remove TNEF savedata, because there will be in-memory `FILE` object.
mkgrgis Apr 24, 2025
869bfb9
Unify file name with other, exclude TNEF decode flague
mkgrgis Apr 24, 2025
8cd2245
Add `MIME_element_add_with_path` to interface
mkgrgis Apr 24, 2025
bb18f77
Add fromal parametres for future `UUENCODE_decode_uu` refactoring
mkgrgis Apr 24, 2025
2e10bd2
Remove separate `unpackdir`, change to `unpack_metadata` field
mkgrgis Apr 24, 2025
9bfb391
Remove `out_filename_size`
mkgrgis Apr 24, 2025
67d43c6
Unify output file naming
mkgrgis Apr 24, 2025
3f7c8db
Refactor UUE decode to `MIME_element` usage
mkgrgis Apr 24, 2025
5822462
Fix function decalaration
mkgrgis Apr 25, 2025
97505e7
Exclude stat file size from OLE module
mkgrgis Apr 25, 2025
1684661
Unify and refactor OLE fragment saving
mkgrgis Apr 25, 2025
b5394ef
Code cleanup, refactor debug in mime.c to C99
mkgrgis Apr 26, 2025
9ea9732
Separate `mime_element` module from `mime`, some C99 cleanup
mkgrgis Apr 26, 2025
0a2d997
Refactor some warnrd by gcc `snprintf` members to dynamic `malloc` style
mkgrgis Apr 26, 2025
df0a8ee
TNEF code clenup to C99
mkgrgis Apr 26, 2025
1e95def
TNEF debug refactoring to C99
mkgrgis Apr 26, 2025
f63c6d3
Refactor MIME headers file output
mkgrgis Apr 26, 2025
8db0bc6
Big `MIME_element` and file saving refactoring
mkgrgis Apr 26, 2025
a28caa4
Add debug refactoring to C99
mkgrgis Apr 26, 2025
5f538bc
Simple UUE refactoring to `FILE` struct
mkgrgis Apr 26, 2025
2095bb7
Refactor UUE debug and cleanup header
mkgrgis Apr 26, 2025
0581d65
Refactor `mime_headers` to `MIME_element`
mkgrgis Apr 26, 2025
a8ce66b
Fix compilation and cleanup `mime_headers`
mkgrgis Apr 26, 2025
d31b240
Remove stat header, add stream copy draft
mkgrgis Apr 26, 2025
d600820
Simple code cleanup
mkgrgis Apr 26, 2025
bbbdfc5
Collapse UUE decoding to C `FILE` instead of filesystem operations
mkgrgis Apr 26, 2025
f145a51
Reafctor TNEF to C `FILE`
mkgrgis Apr 26, 2025
85b9521
Move `MIME_test_uniquename` to `MIME_element`
mkgrgis Apr 28, 2025
7b8ca73
Link `pldstr` to `ripOLE` instead of copy, rename to `MIME_element_free`
mkgrgis Apr 28, 2025
47a4cbd
Refactor rename_method processing, cleanup unused in TNEF
mkgrgis Apr 28, 2025
b316364
Refactor `MIME_element` to in-memory output file operations
mkgrgis Apr 29, 2025
3066534
Unify naming
mkgrgis Apr 29, 2025
b2d0ed8
Rename and unify input file variable
mkgrgis Apr 29, 2025
9bcf09c
Refactor signatures
mkgrgis Apr 29, 2025
a97f93d
unify OLE functions naming
mkgrgis Apr 29, 2025
46bd5a4
Refactor OLE, drafts for in-memory `FILE` usage
mkgrgis Apr 29, 2025
2d27fcd
continie OLE memorize
mkgrgis Apr 29, 2025
dc9af96
Rename OLE decoding for a disk file
mkgrgis Apr 29, 2025
170e85a
Un`scratch` MIME headers, use dynamic memory instead
mkgrgis Apr 30, 2025
300585e
Un`keep` because unused and potentially can be stored in `RIPMIME_out…
mkgrgis Apr 30, 2025
ce5d2e9
Rename to `MIME_process_content_transfer_encoding`
mkgrgis Apr 30, 2025
0112fea
Remove and refactor to local unused globals for MIME headers
mkgrgis Apr 30, 2025
6f15892
Move `save_headers` to functions params from globals
mkgrgis Apr 30, 2025
21a197f
Remove unused
mkgrgis Apr 30, 2025
efb74b6
Unglobal `headerline_original` used in one function only
mkgrgis Apr 30, 2025
c358d3c
Prepare `headerline` removing from globals
mkgrgis Apr 30, 2025
42f70f8
Refactor MIME headers debug
mkgrgis Apr 30, 2025
fe222e0
Refactor std unpackers
mkgrgis May 1, 2025
e17ed6c
Memorize a path creating for OLE
mkgrgis May 1, 2025
1cf2c57
Memorize other filename
mkgrgis May 1, 2025
5184f2e
Other path memorize
mkgrgis May 1, 2025
2d14ffa
Fix function call, code style and other GCC warnings
mkgrgis May 1, 2025
63a87a8
Refactor to provide `parent_mime`
mkgrgis May 2, 2025
a774e7c
Refactor `rename_method`
mkgrgis May 2, 2025
24bf15d
Refactor `unique_names`
mkgrgis May 2, 2025
a17127a
Fix and refactor `MIME_headers` debug
mkgrgis May 5, 2025
96393bb
Unify debug macros in `MIME_headers`
mkgrgis May 5, 2025
a80cbaa
Improve naming, add compilability for `sizeof(char) != 1` case
mkgrgis May 5, 2025
a7b55aa
FFget macros for `sizeof(char) != 1` case
mkgrgis May 5, 2025
0db7b31
Refactor `headerline` from global to `MIME_headers` member
mkgrgis May 5, 2025
e0cac25
Improve code style
mkgrgis May 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@ LIBS=
# DEBUGGING Related Flags

OBJ=ripmime
RIPOLE_OBJS= ripOLE/ole.o ripOLE/olestream-unwrap.o ripOLE/bytedecoders.o ripOLE/bt-int.o
RIPOLE_OBJS= ripOLE/ole.o ripOLE/olestream-unwrap.o ripOLE/bytedecoders.o ripOLE/bt-int.o
#RIPOLE_OBJS=
OFILES= strstack.o mime.o ffget.o MIME_headers.o tnef/tnef.o rawget.o pldstr.o logger.o libmime-decoders.o boundary-stack.o uuencode.o filename-filters.o $(RIPOLE_OBJS)

OFILES= strstack.o mime.o ffget.o mime_headers.o tnef/tnef.o rawget.o pldstr.o logger.o libmime-decoders.o boundary-stack.o uuencode.o filename-filters.o mime_element.o $(RIPOLE_OBJS)

default: tnef/tnef.o ripmime ripOLE/ole.o

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

### Features

- Extracts all attachments even from multiple MUA personalities
- Extracts all attachments even from multiple MUA personalities


### TODO
Expand Down
146 changes: 73 additions & 73 deletions boundary-stack.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,16 @@ static struct BS_globals glb;
Function Name : BS_init
Returns Type : int
----Parameter List
1. void ,
1. void ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_init( void )
{
Expand All @@ -82,14 +82,14 @@ int BS_init( void )
----Parameter List
1. int limit , how many boundary strings to hold
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_set_hold_limit( int limit )
{
Expand All @@ -102,16 +102,16 @@ int BS_set_hold_limit( int limit )
Function Name : BS_set_verbose
Returns Type : int
----Parameter List
1. int level ,
1. int level ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_set_verbose( int level )
{
Expand All @@ -124,16 +124,16 @@ int BS_set_verbose( int level )
Function Name : BS_set_debug
Returns Type : int
----Parameter List
1. int level ,
1. int level ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_set_debug( int level )
{
Expand All @@ -146,16 +146,16 @@ int BS_set_debug( int level )
Function Name : BS_set_boundary_detect_limit
Returns Type : int
----Parameter List
1. int limit ,
1. int limit ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_set_boundary_detect_limit( int limit )
{
Expand All @@ -172,16 +172,16 @@ int BS_set_boundary_detect_limit( int limit )
Function Name : BS_clear
Returns Type : int
----Parameter List
1. void ,
1. void ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_clear( void )
{
Expand Down Expand Up @@ -209,16 +209,16 @@ int BS_clear( void )
Function Name : BS_non_hyphen_length
Returns Type : int
----Parameter List
1. char *boundary ,
1. char *boundary ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_non_hyphen_length( char *boundary )
{
Expand All @@ -234,28 +234,28 @@ int BS_non_hyphen_length( char *boundary )
Function Name : BS_push
Returns Type : int
----Parameter List
1. char *boundary ,
1. char *boundary ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_push( char *boundary )
{

struct BS_node *node;

if ((glb.hold_limit > 0)&&(glb.count >= glb.hold_limit))
if ((glb.hold_limit > 0)&&(glb.count >= glb.hold_limit))
{
DBS LOGGER_log("%s:%d:BS_push:DEBUG: Number of boundaries to hold is at limit (limit=%d)",FL,glb.hold_limit);
return 0;
}

node = malloc(sizeof(struct BS_node));

DBS LOGGER_log("%s:%d:BS_push:DEBUG: head = %p, nn = %p boundary = '%s'",FL, glb.boundarystack, node, boundary);
Expand Down Expand Up @@ -289,16 +289,16 @@ int BS_push( char *boundary )
Function Name : *BS_pop
Returns Type : char
----Parameter List
1. void ,
1. void ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
char *BS_pop( void )
{
Expand All @@ -321,16 +321,16 @@ char *BS_pop( void )
Function Name : *BS_top
Returns Type : char
----Parameter List
1. void ,
1. void ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
char *BS_top( void )
{
Expand All @@ -346,16 +346,16 @@ char *BS_top( void )
Function Name : BS_count
Returns Type : int
----Parameter List
1. void ,
1. void ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_count( void )
{
Expand All @@ -367,16 +367,16 @@ int BS_count( void )
Function Name : BS_is_long_enough
Returns Type : int
----Parameter List
1. int blen ,
1. int blen ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_is_long_enough( int blen )
{
Expand All @@ -390,17 +390,17 @@ int BS_is_long_enough( int blen )
Function Name : BS_boundary_detect
Returns Type : int
----Parameter List
1. char *needle,
2. char *haystack ,
1. char *needle,
2. char *haystack ,
------------------
Exit Codes :
Side Effects :
Exit Codes :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_boundary_detect( char *haystack, char *needle, int needle_length )
{
Expand Down Expand Up @@ -434,8 +434,8 @@ int BS_boundary_detect( char *haystack, char *needle, int needle_length )
if (strncmp( needle, haystack_start, needle_length )==0)
{
DBS LOGGER_log("%s:%d:BS_boundary_detect:DEBUG: Hit on compare",FL);
result = 0;
break;
result = 0;
break;
}
haystack_start++;
}
Expand All @@ -454,13 +454,13 @@ int BS_boundary_detect( char *haystack, char *needle, int needle_length )
2. int len , the length of the boundary
------------------
Exit Codes : 1 == boundary found, 0 == no boundary found
Side Effects :
Side Effects :
--------------------------------------------------------------------
Comments:

--------------------------------------------------------------------
Changes:

\------------------------------------------------------------------*/
int BS_cmp( char *boundary, int len )
{
Expand Down Expand Up @@ -504,7 +504,7 @@ int BS_cmp( char *boundary, int len )
{
// if (node->boundary_length <= len)
if (node->boundary_nhl == nhl)
{
{
DBS LOGGER_log("%s:%d:BS_cmp:DEBUG: Comparing '%s' to '%s'", FL, boundary, node->boundary);
// * 20040903-08H57:PLD: Set boundary length comparison from > 0 to >= 0
if ((node->boundary != NULL)&&(node->boundary_length >= 0))
Expand Down
Loading