diff options
| -rw-r--r-- | bus/desktop-file.c | 22 | ||||
| -rw-r--r-- | dbus/dbus-string.c | 42 | 
2 files changed, 17 insertions, 47 deletions
| diff --git a/bus/desktop-file.c b/bus/desktop-file.c index d798bb12..bfe0240b 100644 --- a/bus/desktop-file.c +++ b/bus/desktop-file.c @@ -360,15 +360,15 @@ is_blank_line (BusDesktopFileParser *parser)  static void  parse_comment_or_blank (BusDesktopFileParser *parser)  { -  int line_end; +  int line_end, eol_len; -  if (!_dbus_string_find (&parser->data, parser->pos, "\n", &line_end)) +  if (!_dbus_string_find_eol (&parser->data, parser->pos, &line_end, &eol_len))      line_end = parser->len;    if (line_end == parser->len)      parser->pos = parser->len;    else -    parser->pos = line_end + 1; +    parser->pos = line_end + eol_len;    parser->line_num += 1;  } @@ -393,12 +393,12 @@ is_valid_section_name (const char *name)  static dbus_bool_t  parse_section_start (BusDesktopFileParser *parser, DBusError *error)  { -  int line_end; +  int line_end, eol_len;    char *section_name;    _DBUS_ASSERT_ERROR_IS_CLEAR (error); -   -  if (!_dbus_string_find (&parser->data, parser->pos, "\n", &line_end)) +     +  if (!_dbus_string_find_eol (&parser->data, parser->pos, &line_end, &eol_len))      line_end = parser->len;    if (line_end - parser->pos <= 2 || @@ -438,7 +438,7 @@ parse_section_start (BusDesktopFileParser *parser, DBusError *error)    if (line_end == parser->len)      parser->pos = parser->len;    else -    parser->pos = line_end + 1; +    parser->pos = line_end + eol_len;    parser->line_num += 1; @@ -450,7 +450,7 @@ parse_section_start (BusDesktopFileParser *parser, DBusError *error)  static dbus_bool_t  parse_key_value (BusDesktopFileParser *parser, DBusError *error)  { -  int line_end; +  int line_end, eol_len;    int key_start, key_end;    int value_start;    int p; @@ -460,7 +460,7 @@ parse_key_value (BusDesktopFileParser *parser, DBusError *error)    _DBUS_ASSERT_ERROR_IS_CLEAR (error); -  if (!_dbus_string_find (&parser->data, parser->pos, "\n", &line_end)) +  if (!_dbus_string_find_eol (&parser->data, parser->pos, &line_end, &eol_len))      line_end = parser->len;    p = parser->pos; @@ -483,7 +483,7 @@ parse_key_value (BusDesktopFileParser *parser, DBusError *error)        if (line_end == parser->len)  	parser->pos = parser->len;        else -	parser->pos = line_end + 1; +	parser->pos = line_end + eol_len;        parser->line_num += 1; @@ -568,7 +568,7 @@ parse_key_value (BusDesktopFileParser *parser, DBusError *error)    if (line_end == parser->len)      parser->pos = parser->len;    else -    parser->pos = line_end + 1; +    parser->pos = line_end + eol_len;    parser->line_num += 1; diff --git a/dbus/dbus-string.c b/dbus/dbus-string.c index 5ae8ac3f..d83a3f39 100644 --- a/dbus/dbus-string.c +++ b/dbus/dbus-string.c @@ -2088,52 +2088,22 @@ dbus_bool_t  _dbus_string_pop_line (DBusString *source,                         DBusString *dest)  { -  int eol; -  dbus_bool_t have_newline; +  int eol, eol_len;    _dbus_string_set_length (dest, 0);    eol = 0; -  if (_dbus_string_find (source, 0, "\n", &eol)) -    { -      have_newline = TRUE; -      eol += 1; /* include newline */ -    } -  else -    { +  if (!_dbus_string_find_eol (source, 0, &eol, &eol_len))        eol = _dbus_string_get_length (source); -      have_newline = FALSE; -    }    if (eol == 0)      return FALSE; /* eof */ -  if (!_dbus_string_move_len (source, 0, eol, -                              dest, 0)) -    { -      return FALSE; -    } +  if (!_dbus_string_move_len (source, 0, eol + eol_len, dest, 0)) +	  return FALSE; -  /* dump the newline and the \r if we have one */ -  if (have_newline) -    { -      dbus_bool_t have_cr; -       -      _dbus_assert (_dbus_string_get_length (dest) > 0); - -      if (_dbus_string_get_length (dest) > 1 && -          _dbus_string_get_byte (dest, -                                 _dbus_string_get_length (dest) - 2) == '\r') -        have_cr = TRUE; -      else -        have_cr = FALSE; -         -      _dbus_string_set_length (dest, -                               _dbus_string_get_length (dest) - -                               (have_cr ? 2 : 1)); -    } -   -  return TRUE; +  /* remove line ending */ +  return _dbus_string_set_length(dest, eol);  }  #ifdef DBUS_BUILD_TESTS | 
