Implement new read --null flag

The `--null` flag to `read` makes it split incoming lines on NUL instead
of newlines. This is intended for processing the output of a command
that uses NUL separators (such as `find -print0`).

Fixes #1694.
This commit is contained in:
Kevin Ballard
2014-09-21 19:18:56 -07:00
parent f889ad0fda
commit 8f8c4cdd17
8 changed files with 192 additions and 43 deletions

29
wcstringutil.h Normal file
View File

@@ -0,0 +1,29 @@
/** \file wcstringutil.h
Helper functions for working with wcstring
*/
#ifndef FISH_WCSTRINGUTIL_H
#define FISH_WCSTRINGUTIL_H
#include <utility>
#include "common.h"
/**
typedef that represents a range in a wcstring.
The first element is the location, the second is the count.
*/
typedef std::pair<wcstring::size_type, wcstring::size_type> wcstring_range;
/**
wcstring equivalent of wcstok(). Supports NUL.
For convenience and wcstok() compatibility, the first character of each
token separator is replaced with NUL.
Returns a pair of (pos, count).
Returns (npos, npos) when it's done.
Returns (pos, npos) when the token is already known to be the final token.
Note that the final token may not necessarily return (pos, npos).
*/
wcstring_range wcstring_tok(wcstring& str, const wcstring &needle, wcstring_range last = wcstring_range(0,0));
#endif