~ubuntu-branches/debian/sid/postfix/sid

« back to all changes in this revision

Viewing changes to src/global/split_addr.c

  • Committer: Package Import Robot
  • Author(s): LaMont Jones, LaMont Jones, localization folks
  • Date: 2014-02-11 07:44:30 UTC
  • mfrom: (1.1.41)
  • Revision ID: package-import@ubuntu.com-20140211074430-91tdwgjriazawdz4
Tags: 2.11.0-1
[LaMont Jones]

* New upstream release: 2.11.0

[localization folks]

* l10n: Updated German translations.  Closes: #734893 (Helge Kreutzmann)

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
/* SYNOPSIS
7
7
/*      #include <split_addr.h>
8
8
/*
9
 
/*      char    *split_addr(localpart, delimiter)
 
9
/*      char    *split_addr(localpart, delimiter_set)
10
10
/*      char    *localpart;
11
 
/*      int     delimiter;
 
11
/*      const char *delimiter_set;
12
12
/* DESCRIPTION
13
13
/*      split_addr() null-terminates \fIlocalpart\fR at the first
14
 
/*      occurrence of the \fIdelimiter\fR character found, and
 
14
/*      occurrence of the \fIdelimiter\fR character(s) found, and
15
15
/*      returns a pointer to the remainder.
16
16
/*
17
17
/*      Reserved addresses are not split: postmaster, mailer-daemon,
50
50
 
51
51
/* split_addr - split address with extreme prejudice */
52
52
 
53
 
char   *split_addr(char *localpart, int delimiter)
 
53
char   *split_addr(char *localpart, const char *delimiter_set)
54
54
{
55
55
    int     len;
56
56
 
67
67
    /*
68
68
     * Backwards compatibility: don't split owner-foo or foo-request.
69
69
     */
70
 
    if (delimiter == '-' && var_ownreq_special != 0) {
 
70
    if (strchr(delimiter_set, '-') != 0 && var_ownreq_special != 0) {
71
71
        if (strncasecmp(localpart, "owner-", 6) == 0)
72
72
            return (0);
73
73
        if ((len = strlen(localpart) - 8) > 0
79
79
     * Safe to split this address. Do not split the address if the result
80
80
     * would have a null localpart.
81
81
     */
82
 
    return (delimiter == *localpart ? 0 : split_at(localpart, delimiter));
 
82
    if ((len = strcspn(localpart, delimiter_set)) == 0 || localpart[len] == 0) {
 
83
        return (0);
 
84
    } else {
 
85
        localpart[len] = 0;
 
86
        return (localpart + len + 1);
 
87
    }
83
88
}