+static void
+print_platform(void)
+{
+ struct stat stat_buf;
+ char *uname;
+ char *distro = NULL;
+ char *platform = NULL;
+ char line[1025];
+ GPtrArray *argv_ptr;
+
+ if (stat("/etc/lsb-release", &stat_buf) == 0) {
+ FILE *release = fopen("/etc/lsb-release", "r");
+ distro = "Ubuntu";
+ if (release) {
+ char *result;
+ while ((result = fgets(line, 1024, release))) {
+ if (strstr(line, "DESCRIPTION")) {
+ platform = strchr(line, '=');
+ if (platform) platform++;
+ }
+ }
+ fclose(release);
+ }
+ } else if (stat("/etc/redhat-release", &stat_buf) == 0) {
+ FILE *release = fopen("/etc/redhat-release", "r");
+ distro = "RPM";
+ if (release) {
+ char *result;
+ result = fgets(line, 1024, release);
+ if (result) {
+ platform = line;
+ }
+ fclose(release);
+ }
+ } else if (stat("/etc/debian_version", &stat_buf) == 0) {
+ FILE *release = fopen("/etc/debian_version", "r");
+ distro = "Debian";
+ if (release) {
+ char *result;
+ result = fgets(line, 1024, release);
+ if (result) {
+ platform = line;
+ }
+ fclose(release);
+ }
+ } else {
+ argv_ptr = g_ptr_array_new();
+
+ g_ptr_array_add(argv_ptr, UNAME_PATH);
+ g_ptr_array_add(argv_ptr, "-s");
+ g_ptr_array_add(argv_ptr, NULL);
+ uname = get_first_line(argv_ptr);
+ if (uname) {
+ if (strncmp(uname, "SunOS", 5) == 0) {
+ FILE *release = fopen("/etc/release", "r");
+ distro = "Solaris";
+ if (release) {
+ char *result;
+ result = fgets(line, 1024, release);
+ if (result) {
+ platform = line;
+ }
+ }
+ fclose(release);
+ }
+ amfree(uname);
+ }
+ g_ptr_array_free(argv_ptr, TRUE);
+ }
+
+ if (!distro) {
+ distro = "Unknown";
+ }
+ if (!platform) {
+ platform = "Unknown";
+ }
+ if (platform[strlen(platform) -1] == '\n') {
+ platform[strlen(platform) -1] = '\0';
+ }
+ g_fprintf(stdout, "OK distro %s\n", distro);
+ g_fprintf(stdout, "OK platform %s\n", platform);
+}