Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Nov 2010 18:47:08 +0100
From:      David DEMELIER <demelier.david@gmail.com>
To:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   trying to sysctl(3) a char value
Message-ID:  <AANLkTikBXRoDHmGnQLoi4MEoBv09J8vbjG=6wriRxqg%2B@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hello,

Since I cannot adjust the brightness on my HP Probook because it sucks
I'm writing a small script that can be use instead. I need to sysctl
the following sysctl variables :

hw.acpi.video.lcd0.brightness
hw.acpi.video.lcd0.levels

the -brightness one is easy since it's an integer, but the levels is
possibly a char :

markand@Melon ~ $ sysctl hw.acpi.video.lcd0.brightness
hw.acpi.video.lcd0.brightness: 90
markand@Melon ~ $ sysctl hw.acpi.video.lcd0.levels
hw.acpi.video.lcd0.levels: 100 50 0 5 10 15 20 25 30 33 36 40 43 46 50
55 60 65 70 75 80 83 86 90 93 96 100

How can I store the content of hw.acpi.video.lcd0.levels? This small
code doesn't work :

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/sysctl.h>

int
main(int argc, char *argv[])
{
	char buf[128];
	size_t len;

	len = sizeof (buf);

	if (sysctlbyname("hw.acpi.video.lcd0.levels", &buf, &len, NULL, 0) == -1) {
		perror("sysctl");
		return -1;
	}

	printf("levels = %s\n", buf);
}

markand@Melon ~ $ ./a.out
levels = d

Kind regards,

-- 
Demelier David



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTikBXRoDHmGnQLoi4MEoBv09J8vbjG=6wriRxqg%2B>