[ekg2-devel] [ekg2-commit] r4101 - trunk/plugins/ncurses: trunk/plugins/ncurses/bindings.c

Marcin Owsiany porridge w debian.org
Pią, 25 Lip 2008, 06:10:09 CEST


On Wed, Jul 23, 2008 at 12:52:07PM +0200, Jakub Zawadzki wrote:
> On Tue, Jul 22, 2008 at 08:31:16PM -0700, Marcin Owsiany wrote:
> > Nie wiem czy to dobrze rozumiem, ale skoro "/ignore %s" przewracało się
> > przy nickach zawierających spacje, to analogicznie "/ignore \"%s\""
> > będzie przewracało się przy nickach zawierających cudzysłowy?
> 
> no powoduje:
> (gdb) $str = "\"nick z \"cudzyslowem\""		// "nick z "cudzyslowem"
> (gdb) p (char *[2]) *array_make($str, " ", 2, 1, 1)
> $1 = {[0] = "nick z ", [1] = "udzyslowem\""}
> 
> Pomysly?

Sytuacja jest analogiczna jak przy funkcji system(3). Wyjścia są dwa:

- albo bawić się w kotka i myszkę próbując tak zacytować wstawiany
  napis, żeby parser który będzie czytał "/ignore cośtam" rozebrał to na
  kawałki tak jak chcemy (czyli spacje, cudzysłowy, w-tył-ciachy itd..)

- albo dorobić funkcję w stylu:
  int command_exec_array(const char *target, session_t *session, int quiet, const char **command_and_args);
  i po prostu przekazywać gotową listę parametrów, zamiast w jednej
  fukncji robić vsprintf, a w innej parsować :-)

-- 
Marcin Owsiany <porridge w debian.org>             http://marcin.owsiany.pl/
GnuPG: 1024D/60F41216  FE67 DA2D 0ACA FC5E 3F75  D6F6 3A0D 8AA0 60F4 1216


Więcej informacji o liście dyskusyjnej ekg2-devel