/* This file is part of pam-modules. Copyright (C) 2009-2012, 2014-2015, 2018 Sergey Poznyakoff This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include void gray_escape_string(gray_slist_t slist, const char *str, size_t len) { const char *p; #define ESCAPABLE_CHAR "\\'\"" #define FLUSH() \ gray_slist_append(slist, str, p - str); \ str = p; for (p = str; p < str + len; p++) { if (strchr(ESCAPABLE_CHAR, *p)) { FLUSH(); str++; gray_slist_append_char(slist, '\\'); gray_slist_append_char(slist, *p); } } FLUSH(); }