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
4f3ca814
...
4f3ca8147d96eac6fac979844f8ef94b4c16d394
authored
2001-01-08 08:05:30 +0000
by
Alain Magloire
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
commit simple url imap parsing.
1 parent
61ec5e08
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
145 additions
and
0 deletions
mailbox/Makefile.am
mailbox/url_imap.c
mailbox/Makefile.am
View file @
4f3ca81
...
...
@@ -49,6 +49,7 @@ tcp.c \
trans_stream.c
\
url.c
\
url_file.c
\
url_imap.c
\
url_mbox.c
\
url_path.c
\
url_pop.c
\
...
...
mailbox/url_imap.c
0 → 100644
View file @
4f3ca81
/* GNU mailutils - a suite of utilities for electronic mail
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program 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 Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <registrar0.h>
#include <url0.h>
static
void
url_imap_destroy
(
url_t
url
);
static
void
url_imap_destroy
(
url_t
url
)
{
(
void
)
url
;
}
/*
IMAP URL
imap://[<user>;AUTH=<auth>@]<host>/
*/
int
_url_imap_init
(
url_t
url
)
{
const
char
*
host
,
*
indexe
;
char
*
name
=
url
->
name
;
/* reject the obvious */
if
(
name
==
NULL
||
strncmp
(
MU_IMAP_SCHEME
,
name
,
MU_IMAP_SCHEME_LEN
)
!=
0
)
return
EINVAL
;
/* do I need to decode url encoding '% hex hex' ? */
/* TYPE */
url
->
_destroy
=
url_imap_destroy
;
/* SCHEME */
url
->
scheme
=
strdup
(
MU_IMAP_SCHEME
);
if
(
url
->
scheme
==
NULL
)
{
url_imap_destroy
(
url
);
return
ENOMEM
;
}
name
+=
MU_IMAP_SCHEME_LEN
;
/* pass the scheme */
host
=
strchr
(
name
,
'@'
);
if
(
host
==
NULL
)
host
=
name
;
/* looking for ";auth=auth-enc" */
for
(
indexe
=
name
;
indexe
!=
host
;
indexe
++
)
{
/* Auth ? */
if
(
*
indexe
==
';'
)
{
/* make sure it's the token */
if
(
strncasecmp
(
indexe
+
1
,
"auth="
,
5
)
==
0
)
break
;
}
}
/* USER */
url
->
user
=
malloc
(
indexe
-
name
+
1
);
if
(
url
->
user
==
NULL
)
{
url_imap_destroy
(
url
);
return
-
1
;
}
((
char
*
)
memcpy
(
url
->
user
,
name
,
indexe
-
name
))[
indexe
-
name
]
=
'\0'
;
/* AUTH */
if
(
indexe
==
host
)
{
/* Use default AUTH '*' */
url
->
auth
=
malloc
(
1
+
1
);
if
(
url
->
auth
)
{
url
->
auth
[
0
]
=
'*'
;
url
->
auth
[
1
]
=
'\0'
;
}
}
else
{
/* move pass AUTH= */
indexe
+=
6
;
url
->
auth
=
malloc
(
host
-
indexe
+
1
);
if
(
url
->
auth
)
{
((
char
*
)
memcpy
(
url
->
auth
,
indexe
,
host
-
indexe
))
[
host
-
indexe
]
=
'\0'
;
}
}
if
(
url
->
auth
==
NULL
)
{
url_imap_destroy
(
url
);
return
-
1
;
}
/* HOST*/
if
(
*
host
==
'@'
)
host
++
;
indexe
=
strchr
(
host
,
'/'
);
if
(
indexe
==
NULL
)
url
->
host
=
strdup
(
host
);
else
{
url
->
host
=
malloc
(
indexe
-
host
+
1
);
if
(
url
->
host
)
((
char
*
)
memcpy
(
url
->
host
,
host
,
indexe
-
host
))[
indexe
-
host
]
=
'\0'
;
url
->
query
=
strdup
(
indexe
+
1
);
}
if
(
url
->
host
==
NULL
)
{
url_imap_destroy
(
url
);
return
ENOMEM
;
}
url
->
port
=
MU_IMAP_PORT
;
return
0
;
}
Please
register
or
sign in
to post a comment