:: Re: [DNG] Systemd Shims
Top Page
Delete this message
Reply to this message
Author: Edward Bartolo
Date:  
To: dng, Steve Litt
Subject: Re: [DNG] Systemd Shims
Lazarus frontend can now run external programs capturing their textual
output. Hopefully, within a few days, the frontend will be Alpha. :)

On 17/08/2015, Edward Bartolo <edbarx@???> wrote:
> The Lazarus backend interface unit is as follows but still unfinished:
>
> ----------------------------------------
> unit backend;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
> Classes, SysUtils, stdctrls;
>
> procedure Backend_Save(essid, pw: string);
> procedure Backend_Save_Connect(essid, pw: string);
> function Backend_Query_Connect(connection: string; var pw: string):
> boolean;
> function Backend_Delete_Connect(essid: string): boolean;
> function Backend_Connection_Connect(essid: string): boolean;
> function Backend_Disconnect_Active_Connection: boolean;
> procedure Backend_Scan(aListBox: TListBox);
> procedure Backend_Load_Existing(aListBox: TListBox);
>
> implementation
>
> const
> opSave = 0;
> opSaveConnect = 1;
> opQueryConnect = 2;
> opDeleteConnect = 3;
> opConnectionConnect = 4;
> opDisconnectActiveConnection = 5;
> opScan = 6;
> opLoadExisting = 7;
>
>
> procedure Backend_Save(essid, pw: string);
> begin
> // backend opSave essid pw
> end;
>
> procedure Backend_Save_Connect(essid, pw: string);
> begin
> // backend opSaveConnect essid pw
> end;
>
> function Backend_Query_Connect(connection: string; var pw:string): boolean;
> begin
> // backend opQueryConnect essid pw
> end;
>
> function Backend_Delete_Connect(essid: string): boolean;
> begin
> // backend opDeleteConnect essid
> result := true;
> end;
>
> function Backend_Connection_Connect(essid: string): boolean;
> begin
> // backend opConnectionConnect essid
> end;
>
> function Backend_Disconnect_Active_Connection: boolean;
> begin
> // backend opDisconnectActiveConnection
> end;
>
> procedure Backend_Scan(aListBox: TListBox);
> begin
> // backend opScan stringlist
> end;
>
> procedure Backend_Load_Existing(aListBox: TListBox);
> begin
> // backend opLoadExisting stringlist
> end;
>
> end.
> ---------------------------------------------
>
> On 17/08/2015, Edward Bartolo <edbarx@???> wrote:
>> The Progress of My Coding Till Now:
>>
>> I am attaching two images of the GUI's main window and the only
>> dialog. The GUI is programmed in Lazarus Pascal.
>>
>> The backend is in C. The code till now, although it doesn't do anything
>> useful.
>> ----------------------------------------------
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <string.h>
>> #include <unistd.h>
>>
>>
>> using namespace std;
>>
>>
>> #define opSave                0
>> #define opSaveConnect            1
>> #define opQueryConnect            2
>> #define opDeleteConnect            3
>> #define opConnectionConnect        4
>> #define opDisconnectActiveConnection    5
>> #define opScan                6
>> #define opLoadExisting            7

>>     
>> /*
>> 1) Glib::spawn_sync instead of a pipe stream, provides a slot.
>> 2) cmd trying to call an inexistent command still returns a valid
>> pointer!
>>    verify cmd exists before calling exec
>> */

>>
>> inline bool file_exists(char* name) {
>> return (access(name, F_OK) != -1);
>> }
>>
>>
>> int exec(const char* cmd, char* out)
>> {
>>     const int buf_size = 128;

>>         
>>     FILE * pipe = popen(cmd, "r");
>>     char buffer[buf_size];
>>     while(!feof(pipe)) {
>>         if(fgets(buffer, buf_size, pipe) != NULL)
>>         {
>>             if (out != NULL)
>>                 strcat(out, buffer);
>>                 else strcpy(out, buffer);
>>         }
>>     }

>>         
>>     return pclose(pipe);
>> }

>>
>> int main(int argc, char *argv[])
>> {
>>     char *out = 0;
>>     int switch_item = -1;
>>     if (argc > 1) switch_item = atoi(argv[1]);

>>     
>>     switch (switch_item) {
>>         case opSave:
>>             //saveFile(argv[2], argv[3]);
>>             exec("cat /etc/network/interfaces", out);
>>             //out[0] = ' ';
>>             printf(out);

>>         
>>             return 0;

>>             
>>         case opSaveConnect:
>>             //saveFile(argv[2], argv[3]);
>>             //Connect(argv[2]);
>>             return 0;

>>             
>>         case opQueryConnect:

>>             
>>             return 0;

>>             
>>         case opDeleteConnect:

>>         
>>             break;

>>             
>>         case opConnectionConnect:

>>             
>>             break;

>>             
>>         case opDisconnectActiveConnection:

>>         
>>             break;

>>             
>>         case opScan:

>>             
>>             break;

>>             
>>         case opLoadExisting:

>>         
>>             return 0;
>>     }

>>     
>>     return -1; // parameter not in range
>> }
>> ----------------------------------------------------------------

>>
>>
>> On 17/08/2015, Rainer Weikusat <rainerweikusat@???> wrote:
>>> James Powell <james4591@???> writes:
>>>> While there are packages that can be invisible and unintrusive into
>>>> the system, there are some that cannot.
>>>>
>>>> The problem is responsibility.
>>>>
>>>> Who wants to remain responsible for boot scripts? Upstream or vendor?
>>>>
>>>> Who wants responsibility for providing interoperability between
>>>> projects? Upstream or downstream bazaar?
>>>>
>>>> Who wants responsibility for the userland? Upstream or the downstream
>>>> bazaar?
>>>
>>> It's possible to frame this in more technical terms: Who'll end up doing
>>> system integration, system integrators or application developers? The
>>> answer should (hopefully) be obvious.
>>> _______________________________________________
>>> Dng mailing list
>>> Dng@???
>>> https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng
>>>
>>
>