> On 14 Aug 2016, at 11:11, Hiltjo Posthuma <[email protected]> wrote:
> 
> On Sun, Aug 14, 2016 at 12:30:46AM +0200, Joerg Jung wrote:
>> Hi,
>> 
>> please find below a diff for sic to enable pledge() to be used on
>> OpenBSD.  This diff was originally submitted by Ali H. Fardan via
>> [email protected].  While here, I enabled the usage of strlcpy()
>> from libc on OpenBSD. 
>> 
>> Honestly, I'm not sure about how such portability goo should be 
>> handled the suckless way, but since I see similar #ifdef __linux__
>> instances in slock, I guess the proposed way is okay?
>> 
>> Thanks,
>> Regards,
>> Joerg
>> 
>> 
>> diff --git a/sic.c b/sic.c
>> index ce6d216..b22ea06 100644
>> --- a/sic.c
>> +++ b/sic.c
>> @@ -182,6 +182,8 @@ main(int argc, char *argv[]) {
>>      setbuf(stdout, NULL);
>>      setbuf(srv, NULL);
>>      setbuf(stdin, NULL);
>> +    if (pledge("stdio", NULL) == -1)
>> +            eprint("error: pledge:");
>>      for(;;) { /* main loop */
>>              FD_ZERO(&rd);
>>              FD_SET(0, &rd);
>> diff --git a/util.c b/util.c
>> index 8afa58f..88ea06e 100644
>> --- a/util.c
>> +++ b/util.c
>> @@ -40,12 +40,16 @@ dial(char *host, char *port) {
>>      return srv;
>> }
>> 
>> +#ifndef __OpenBSD__
>> +#define pledge(promises, paths) 0
>> +
>> #define strlcpy _strlcpy
>> static void
>> strlcpy(char *to, const char *from, int l) {
>>      memccpy(to, from, '\0', l);
>>      to[l-1] = '\0';
>> }
>> +#endif
>> 
>> static char *
>> eat(char *s, int (*p)(int), int r) {
>> 
> 
> Hi,
> 
> In general we should try to avoid ifdefs asmuch as possible. But I would not
> mind the pledge in the form:
> 
>       #ifdef __OpenBSD__
>       if (pledge("stdio", NULL) == -1)
>               eprint("error: pledge:");
>       #endif
> 
> Also in my opinion we should just import the OpenBSD strlcpy() version or
> rename the current one, it has not the same behaviour as strlcpy and is
> confusing.
> 
> Attached is my proposed patch.

Fine with me.

Reply via email to