{"id":20775004,"url":"https://github.com/qdot/libnputil","last_synced_at":"2026-04-26T07:32:05.523Z","repository":{"id":66557554,"uuid":"450514","full_name":"qdot/libnputil","owner":"qdot","description":"Where I put all the functions I use in more than one library","archived":false,"fork":false,"pushed_at":"2010-10-10T01:53:26.000Z","size":108,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-26T19:41:43.932Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qdot.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2009-12-28T00:15:59.000Z","updated_at":"2014-01-31T08:10:33.000Z","dependencies_parsed_at":"2023-02-20T06:25:16.725Z","dependency_job_id":null,"html_url":"https://github.com/qdot/libnputil","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/qdot/libnputil","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Flibnputil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Flibnputil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Flibnputil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Flibnputil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qdot","download_url":"https://codeload.github.com/qdot/libnputil/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdot%2Flibnputil/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32289926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T06:26:00.361Z","status":"ssl_error","status_checked_at":"2026-04-26T06:25:58.791Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T12:34:10.063Z","updated_at":"2026-04-26T07:32:05.423Z","avatar_url":"https://github.com/qdot.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libnputil\n\nby Kyle Machulis\n\n[Nonpolynomial Labs](http://www.nonpolynomial.com)\n\n## Description\n\nThere comes a time where you just have to admit to yourself that all\nyou're doing is adding like, one or two functions to a libusb\nfrontend, calling it a driver, and releasing it to the world. This\nlibrary is my admission of that.\n\nI have at least 4 projects that simply add a single function to\nlibusb, or else use the exact same bastardization of the HID layer to\ncommunicate. Instead of copying the code everywhere, I've created\nlibnputil. Now, libnputil isn't exactly a \"library\". It's really just\nsource files that I include into other source files and do some\npreprocessor acrobatics with in order to create library specific\nsymbols. While one would normally just use a damn library for this,\n99% of the users of my libraries don't really care to link yet another\nlibrary just to get the functionality of my drivers, and they very\nrarely change versions or functionality. With that in mind, I bypass\nthe idea of library compilation and just move the symbols right on\ninto the library itself. It still allows for the libraries below\n(libusb/windows ddk) to be switched out, but otherwise things look the\nsame because I very, very rarely change how I do device selection and\ninitialization at this level.\n\n## Development Notes\n\nI really wouldn't recommend using this if you aren't me. This is just\na utility library for me to keep my code sorted in a way that seems\nslightly but not really sane to me.\n\n## Library Requirements\n\n* [CMake (Required on all platforms)](http://www.cmake.org)\n* [WDK (Windows Only)](http://www.microsoft.com/whdc/devtools/WDK/default.mspx)\n* [libusb-1.0 (All non-windows platforms)](http://www.libusb.org)\n* [libusb-0.1 (Legacy, deprecated)](http://www.libusb.org)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqdot%2Flibnputil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqdot%2Flibnputil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqdot%2Flibnputil/lists"}