> On Nov 15, 2020, at 12:41 PM, Kyle Evans <kev...@freebsd.org> wrote:
> 
> On Sun, Nov 15, 2020 at 1:33 PM Guy Yur <guy...@gmail.com> wrote:
>> 
>> On 15/11/20 8:55 pm, Scott Long wrote:
>>> This is fixed in revision 367701
>>> 
>>> Scott
>> 
>> Hi,
>> 
>> I am on revision 367710 (newer) and have the same problem.
>> sysctlbyname() returns an empty string and length of 1.
>> sysctl() with name converted to mib works fine.
>> 
>> ssize_t tmplen;
>> char path[1000] = { 0 };
>> 
>> tmplen = getlocalbase(path, sizeof(path));
>> printf("%s : %zd\n", path, tmplen);
>> 
>> tmplen = sizeof(path);
>> if (sysctlbyname("user.localbase", path, (size_t *)&tmplen, NULL, 0) == 0)
>>   printf("%s : %zd\n", path, tmplen);
>> 
>> int mib[100] = { 0 };
>> size_t miblen;
>> if (sysctlnametomib("user.localbase", mib, &miblen) == 0) {
>>   for (int i = 0; i < miblen; i++)
>>     printf("%d ", mib[i]);
>>   printf("\n");
>> }
>> 
>> tmplen = sizeof(path);
>> if (sysctl(mib, miblen, path, (size_t *)&tmplen, NULL, 0) == 0)
>>   printf("%s : %zd\n", path, tmplen);
>> 
>> prints:
>>  : 1
>>  : 1
>> 8 21
>> /usr/local : 11
>> 
>> Thanks,
>> Guy Yur
>> 
> 
> This is a separate (valid) problem, but not directly related to
> Scott's work here. sysctlbyname now goes directly to the kernel with
> no chance for the user.* sysctls to intercept. That should
> independently be fixed to maintain the illusion that they're real
> sysctl’s

It turns out the my userland, kernel, and startup scripts were out of
sync and this was succeeding in error for me.  Thanks for the hint, I
think I have it working now.

Scott

_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to