Ok, thanks. I'm looking at the backend :)

On 12/06/2015 08:45 AM, Edward Bartolo wrote:
Hi Aitor,

As you can see, popen runs the command opening a pipe to trap its
textual output. shell_reader is a pointer to the actual output reader.
fgets reads the shell_reader line by line until it returns false. It
places lines in buffer using 1024 as a size limit in the quoted code
snippet. The read string in buffer is null terminated.

This should set you going.

Edward

On 06/12/2015, Edward Bartolo<[email protected]>  wrote:
>Hi Aitor,
>
>The best way for you is to use the backend's code for reference. What
>you want is already implemented there. TProcesss was used to trap the
>background cli commands output although there are instances where that
>output is discarded.
>
>What you need is this from the CLI backend's code (core_functions.c):
>[ code snippet from getDefaultDevices() ]
>
>FILE * shell_reader;
>char scan_buffer[1024];
>
>[...]
>
>shell_reader = popen(command, "r");
>    if(!shell_reader) {
>            fprintf(
>                    stderr,
>                    "ERROR: getDefaultDevices(): "
>                    "popen() failed (Error: %s)\n",
>                    strerror(errno)
>            );
>                            
>            return -1;
>    }
>                    
>    char* ptr;
>    while((fgets(scan_buffer, 1024, shell_reader))) {
>      ptr = (char*) scan_buffer;
>            if (strstr((char *) scan_buffer, "lo") == ptr)
>                    continue;
>            else if (strstr((char *) scan_buffer, "wl") == ptr) {
>                    snprintf(
>                            _wl,
>                            1024,
>                            "%s",
>                            (char*) scan_buffer
>                    );
>            } else if (
>                    strstr((char *) scan_buffer, "eth") == ptr ||
>                    strstr((char *) scan_buffer, "en") == ptr     
>            ) {
>                    snprintf(
>                            _eth,
>                            1024,
>                            "%s",
>                            (char*) scan_buffer
>                    );
>            }
>    }
>    
>    pclose(shell_reader);
>    
>
>Ask again if you in the event you may need more help.
>
>
>Edward
>
>
>On 05/12/2015, aitor_czr<[email protected]>  wrote:
>>Hi Edward,
>>
>>I'm trying to scan the existing connections. As i can see in the
>>TForm1.btnLoadExistingClick(Sender: TObject) method, you used 'TProcess'
>>for running external applications. In C this must be replaced by the
>>'system' command.
>>
>>Now i'm looking at the TProcess options. For example:
>>
>>   Proc.Executable := 'cat';
>>   Proc.Parameters.Add('/etc/network/interfaces');
>>   Proc.Options := [poUsePipes, poWaitOnExit];
>>   Proc.Execute;
>>
>>Here are the definitions:
>>
>>http://olympiad.cs.uct.ac.za/docs/fpc-2.4.4/fcl/process/tprocess.options.html
>>
>>Cheers,
>>
>>     Aitor.
>>
>>On 12/04/2015 01:00 PM, Edward Bartolo<[email protected]>  wrote:
>>>Hi Aitor,
>>>
>>>I succeeded to run my trial gtk3 application with events without
>>>errors. I always wanted to learn coding GUI applications for Linux in
>>>C/C++. This can be a good exercise.
>>>
>>>Edward
>>>
>>>
>>>On 02/12/2015, aitor_czr<[email protected]>   wrote:
>>>> >Woow !!
>>>> >
>>>> >On 02/12/15 12:08, Edward Bartolo wrote:
>>>>> >>priv = (Private*) g_malloc (sizeof (struct _Private));

_______________________________________________
Dng mailing list
[email protected]
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to