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
78f21e8d
...
78f21e8dcbe3697e008b72d361bb384f15a31f78
authored
2003-08-28 20:12:47 +0000
by
Sergey Poznyakoff
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Added
1 parent
29483610
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
227 additions
and
0 deletions
auth/lbuf.c
auth/lbuf.h
mailbox/mbox/file.c
auth/lbuf.c
0 → 100644
View file @
78f21e8
/* GNU Mailutils -- a suite of utilities for electronic mail
Copyright (C) 2003 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <lbuf.h>
struct
_line_buffer
{
char
*
buffer
;
/* Line buffer */
size_t
size
;
/* Allocated size */
size_t
level
;
/* Current filling level */
};
int
_auth_lb_create
(
struct
_line_buffer
**
s
)
{
*
s
=
malloc
(
sizeof
(
**
s
));
if
(
!*
s
)
return
ENOMEM
;
(
*
s
)
->
buffer
=
NULL
;
(
*
s
)
->
size
=
0
;
(
*
s
)
->
level
=
0
;
return
0
;
}
void
_auth_lb_destroy
(
struct
_line_buffer
**
s
)
{
if
(
s
&&
*
s
)
{
free
((
*
s
)
->
buffer
);
free
(
*
s
);
*
s
=
NULL
;
}
}
void
_auth_lb_drop
(
struct
_line_buffer
*
s
)
{
s
->
level
=
0
;
}
int
_auth_lb_grow
(
struct
_line_buffer
*
s
,
const
char
*
ptr
,
size_t
size
)
{
if
(
!
s
->
buffer
)
{
s
->
buffer
=
malloc
(
size
);
s
->
size
=
size
;
s
->
level
=
0
;
}
else
if
(
s
->
size
-
s
->
level
<
size
)
{
size_t
newsize
=
s
->
size
+
size
;
s
->
buffer
=
realloc
(
s
->
buffer
,
newsize
);
if
(
s
->
buffer
)
s
->
size
=
newsize
;
}
if
(
!
s
->
buffer
)
return
ENOMEM
;
memcpy
(
s
->
buffer
+
s
->
level
,
ptr
,
size
);
s
->
level
+=
size
;
return
0
;
}
int
_auth_lb_read
(
struct
_line_buffer
*
s
,
const
char
*
optr
,
size_t
osize
)
{
int
len
;
len
=
s
->
level
>
osize
?
osize
:
s
->
level
;
memcpy
(
optr
,
s
->
buffer
,
len
);
if
(
s
->
level
>
len
)
{
memmove
(
s
->
buffer
,
s
->
buffer
+
len
,
s
->
level
-
len
);
s
->
level
-=
len
;
}
else
if
(
s
->
level
==
len
)
s
->
level
=
0
;
return
len
;
}
int
_auth_lb_readline
(
struct
_line_buffer
*
s
,
const
char
*
ptr
,
size_t
size
)
{
char
*
p
=
strchr
(
s
->
buffer
,
'\n'
);
if
(
p
&&
p
-
s
->
buffer
+
1
<
size
)
size
=
p
-
s
->
buffer
+
1
;
return
_auth_lb_read
(
s
,
ptr
,
size
);
}
int
_auth_lb_level
(
struct
_line_buffer
*
s
)
{
return
s
->
level
;
}
char
*
_auth_lb_data
(
struct
_line_buffer
*
s
)
{
return
s
->
buffer
;
}
auth/lbuf.h
0 → 100644
View file @
78f21e8
struct
_line_buffer
;
int
_auth_lb_create
(
struct
_line_buffer
**
s
);
void
_auth_lb_destroy
(
struct
_line_buffer
**
s
);
void
_auth_lb_drop
(
struct
_line_buffer
*
s
);
int
_auth_lb_grow
(
struct
_line_buffer
*
s
,
const
char
*
ptr
,
size_t
size
);
int
_auth_lb_read
(
struct
_line_buffer
*
s
,
const
char
*
ptr
,
size_t
size
);
int
_auth_lb_readline
(
struct
_line_buffer
*
s
,
const
char
*
ptr
,
size_t
size
);
int
_auth_lb_level
(
struct
_line_buffer
*
s
);
char
*
_auth_lb_data
(
struct
_line_buffer
*
s
);
mailbox/mbox/file.c
0 → 100644
View file @
78f21e8
/* GNU Mailutils -- a suite of utilities for electronic mail
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <mailutils/url.h>
#include <mailbox0.h>
#include <registrar0.h>
/*
Caveat there is no specific URL for file mailbox or simple path name,
<path_name>
file:<path_name>
It would be preferrable to use :
maildir:<path>
unix:<path>
mmdf:<path>
This would eliminate heuristic discovery that would turn
out to be wrong.
*/
int
_mailbox_file_init
(
mailbox_t
mbox
)
{
struct
stat
st
;
size_t
len
=
0
;
char
*
path
;
int
status
;
status
=
url_get_path
(
mbox
->
url
,
NULL
,
0
,
&
len
);
if
(
status
!=
0
)
return
status
;
path
=
calloc
(
len
+
1
,
sizeof
(
char
));
if
(
path
==
NULL
)
return
ENOMEM
;
status
=
url_get_path
(
mbox
->
url
,
path
,
len
+
1
,
NULL
);
if
(
status
!=
0
)
{
free
(
path
);
return
status
;
}
/* Sigh, if they want to creat ??? they should know the type of ???
What is the best course of action ? For the default is mbox if the
file does not exist. */
if
(
stat
(
path
,
&
st
)
<
0
)
{
status
=
_mailbox_mbox_init
(
mbox
);
}
else
if
(
S_ISDIR
(
st
.
st_mode
))
{
/* Is that true ? Are all directories Maildir ?? */
/* NOT SUPPORTED: status = _mailbox_maildir_init (mbox);*/
status
=
ENOSYS
;
}
else
{
/*
FIXME: We should do an open() and try
to do a better reconnaissance of the type,
maybe MMDF. For now assume Unix MBox */
status
=
_mailbox_mbox_init
(
mbox
);
}
free
(
path
);
return
status
;
}
Please
register
or
sign in
to post a comment