mirror of https://github.com/nirenjan/libx52.git
Add bugreport utility
This change adds a utility that generates some output that can be used to figure out what the user system is, specifically, the versions of the following: * libusb * hidapi (if available) * kernel * device info These parameters can be used to determine if the user is running some non-standard environment, and make it easier to track down bugs.reverse-scroll
parent
1c0d98c474
commit
8fd16d544a
|
@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based upon [Keep a Changelog].
|
The format is based upon [Keep a Changelog].
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
### Added
|
||||||
|
- Bug report utility to make it easier to gather system and build information
|
||||||
|
when reporting issues.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Renamed project from `x52pro-linux` to `libx52`
|
- Renamed project from `x52pro-linux` to `libx52`
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@ include evtest/Makefile.am
|
||||||
include daemon/Makefile.am
|
include daemon/Makefile.am
|
||||||
include udev/Makefile.am
|
include udev/Makefile.am
|
||||||
|
|
||||||
|
include bugreport/Makefile.am
|
||||||
include docs/Makefile.am
|
include docs/Makefile.am
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Automake for libx52-bugreport
|
||||||
|
#
|
||||||
|
# Copyright (C) 2021 Nirenjan Krishnan (nirenjan@nirenjan.org)
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
|
||||||
|
|
||||||
|
bin_PROGRAMS += x52bugreport
|
||||||
|
|
||||||
|
# Bug report program that reports the build and linked library versions
|
||||||
|
x52bugreport_SOURCES = bugreport/bugreport.c
|
||||||
|
x52bugreport_CFLAGS = \
|
||||||
|
-I$(top_srcdir)/libx52io \
|
||||||
|
@LIBUSB_CFLAGS@ \
|
||||||
|
@HIDAPI_CFLAGS@ \
|
||||||
|
$(WARN_CFLAGS)
|
||||||
|
|
||||||
|
x52bugreport_LDFLAGS = \
|
||||||
|
@LIBUSB_LIBS@ \
|
||||||
|
@HIDAPI_LIBS@ \
|
||||||
|
$(WARN_LDFLAGS)
|
||||||
|
|
||||||
|
x52bugreport_LDADD = libx52io.la
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* libx52 bugreport utility
|
||||||
|
*
|
||||||
|
* Copyright (C) 2021 Nirenjan Krishnan (nirenjan@nirenjan.org)
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
|
#include "libusb.h"
|
||||||
|
#include "hidapi.h"
|
||||||
|
#include "libx52io.h"
|
||||||
|
|
||||||
|
static void print_sysinfo(void)
|
||||||
|
{
|
||||||
|
struct utsname uts;
|
||||||
|
|
||||||
|
puts("");
|
||||||
|
puts("System info:");
|
||||||
|
puts("============");
|
||||||
|
if (uname(&uts) < 0) {
|
||||||
|
printf("Unable to get system info: %s\n", strerror(errno));
|
||||||
|
} else {
|
||||||
|
printf("%s %s %s (%s)\n", uts.sysname, uts.release, uts.machine, uts.version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void print_devinfo(void)
|
||||||
|
{
|
||||||
|
libx52io_context *ctx;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
puts("");
|
||||||
|
puts("Device info:");
|
||||||
|
puts("============");
|
||||||
|
#define CHECK_RC() do { \
|
||||||
|
if (rc != LIBX52IO_SUCCESS) { \
|
||||||
|
puts(libx52io_strerror(rc)); \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
rc = libx52io_init(&ctx);
|
||||||
|
CHECK_RC();
|
||||||
|
|
||||||
|
rc = libx52io_open(ctx);
|
||||||
|
CHECK_RC();
|
||||||
|
|
||||||
|
printf("Device ID: vendor 0x%04x product 0x%04x version 0x%04x\n",
|
||||||
|
libx52io_get_vendor_id(ctx),
|
||||||
|
libx52io_get_product_id(ctx),
|
||||||
|
libx52io_get_device_version(ctx));
|
||||||
|
printf("Device name: '%s' '%s'\n",
|
||||||
|
libx52io_get_manufacturer_string(ctx),
|
||||||
|
libx52io_get_product_string(ctx));
|
||||||
|
printf("Serial number: '%s'\n",
|
||||||
|
libx52io_get_serial_number_string(ctx));
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
const struct libusb_version *libusb;
|
||||||
|
|
||||||
|
puts("libx52 bugreport");
|
||||||
|
puts("================");
|
||||||
|
printf("Package version: %s\n", VERSION);
|
||||||
|
printf("Build version: %s\n", BUILD_VERSION);
|
||||||
|
|
||||||
|
puts("");
|
||||||
|
puts("Built against:");
|
||||||
|
puts("==============");
|
||||||
|
|
||||||
|
printf("libusb API version: 0x%08x\n", LIBUSB_API_VERSION);
|
||||||
|
#if defined HID_API_VERSION_STR
|
||||||
|
printf("hidapi version: %s\n", HID_API_VERSION_STR);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
libusb = libusb_get_version();
|
||||||
|
puts("");
|
||||||
|
puts("System versions:");
|
||||||
|
puts("================");
|
||||||
|
printf("libusb: %d.%d.%d.%d%s (%s)\n",
|
||||||
|
libusb->major, libusb->minor, libusb->micro, libusb->nano,
|
||||||
|
libusb->rc, libusb->describe);
|
||||||
|
#if defined HID_API_VERSION_STR
|
||||||
|
printf("hidapi: %s\n", hid_version_str());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
print_sysinfo();
|
||||||
|
print_devinfo();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue