1#ifndef QUOTE_H 2#define QUOTE_H 3 4#include <stdio.h> 5 6/* Help to copy the thing properly quoted for the shell safety. 7 * any single quote is replaced with '\'', and the whole thing 8 * is enclosed in a single quote pair. 9 * 10 * For example, if you are passing the result to system() as an 11 * argument: 12 * 13 * sprintf(cmd, "foobar %s %s", sq_quote(arg0), sq_quote(arg1)) 14 * 15 * would be appropriate. If the system() is going to call ssh to 16 * run the command on the other side: 17 * 18 * sprintf(cmd, "git-diff-tree %s %s", sq_quote(arg0), sq_quote(arg1)); 19 * sprintf(rcmd, "ssh %s %s", sq_quote(host), sq_quote(cmd)); 20 * 21 * Note that the above examples leak memory! Remember to free result from 22 * sq_quote() in a real application. 23 */ 24 25externchar*sq_quote(const char*src); 26 27externintquote_c_style(const char*name,char*outbuf,FILE*outfp, 28int nodq); 29externchar*unquote_c_style(const char*quoted,const char**endp); 30 31externvoidwrite_name_quoted(const char*prefix,const char*name, 32int quote,FILE*out); 33#endif