{"id":13578999,"url":"https://github.com/GPSBabel/gpsbabel","last_synced_at":"2025-04-05T20:32:55.937Z","repository":{"id":35749096,"uuid":"40028252","full_name":"GPSBabel/gpsbabel","owner":"GPSBabel","description":"GPSBabel: convert, manipulate, and transfer data from GPS programs or GPS receivers. Open Source and supported on MacOS, Windows, Linux, and more. Pointy clicky GUI or a command line version...","archived":false,"fork":false,"pushed_at":"2025-03-30T21:24:58.000Z","size":64618,"stargazers_count":492,"open_issues_count":76,"forks_count":130,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-04-03T16:08:03.423Z","etag":null,"topics":["command-line-app","gps","gps-coordinates","gps-data","gps-data-logging","gps-device","gps-tracking","gpsbabel","gui","linux","macos","qt","qt-gui","windows"],"latest_commit_sha":null,"homepage":"https://www.gpsbabel.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GPSBabel.png","metadata":{"files":{"readme":"README.contrib","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-07-31T23:05:54.000Z","updated_at":"2025-03-30T21:18:44.000Z","dependencies_parsed_at":"2023-10-26T03:28:33.528Z","dependency_job_id":"8fde71ad-84c8-4b09-8fe9-f6e7932323f3","html_url":"https://github.com/GPSBabel/gpsbabel","commit_stats":null,"previous_names":[],"tags_count":135,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPSBabel%2Fgpsbabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPSBabel%2Fgpsbabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPSBabel%2Fgpsbabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GPSBabel%2Fgpsbabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GPSBabel","download_url":"https://codeload.github.com/GPSBabel/gpsbabel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247399818,"owners_count":20932875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["command-line-app","gps","gps-coordinates","gps-data","gps-data-logging","gps-device","gps-tracking","gpsbabel","gui","linux","macos","qt","qt-gui","windows"],"created_at":"2024-08-01T15:01:35.705Z","updated_at":"2025-04-05T20:32:50.927Z","avatar_url":"https://github.com/GPSBabel.png","language":"C++","readme":"If you're interested in contributing to this program, here are some\nguidelines.  Submit pull requests to https://github.com/gpsbabel/gpsbabel for\nconsideration and integration.\n\nRules to Live By\n----------------\n\nStandards are good.   ISO C++, Qt, and POSIX are greatly preferred to\nadding more libraries or implementing your own hash maps or other common\nfunctions.\n\nYou may find format_skeleton.c and filter_skeleton.c in the source tree\nto be helpful examples. Just add meat!\n\nPrefer Qt objects/classes to ISO C/POSIX services.\n * QStrings are reference counted, implicitly shared, and have a\n   robust supporting library.\n * QDateTime supports sub-second time and a range of dates far\n   beyond 1970-\u003e2038 and are much more pleasant to work with\n   than ctime/mktime/struct tm.\n * QXmlStreamReader and Writer eliminate the need to explictly quote data.\n\"But I see strcpy, sprintf, and struct tm and such in the code!\"  It's\ntrue; GPSBabel is a tenured project of well over ten years.  We have\ncode that predates our move to C++/Qt that isn't well tested or has a\nlow payoff to modernize and uses old constructs.  Our actively\nmaintained/strategic formats like GPX and KML tend to be better\nexamples of modern programming and are generally better models to\nfollow. New code shouldn't be using xstrdup and gbfprintf.\n\nCompilers complain for a reason.   Code shouldn't emit warnings.\n\nThe entire world doesn't run \u003cyour OS here\u003e.  We regularly test this code on\nat least five different OSes.  If you find yourself wanting to insert\ncompiler or OS specific magic, please resist.\n\nWe try to keep a consistent convention in code that's \"ours\".  We aren't\ninterested in trying to convert zlib or jeeps to it, but in general we\nprefer:\n\n\tint\n\tmumble(int whatever)\n\t{\n        \u003c2spaces\u003echar* pointers_clump_to_type;\n\t\u003c2spaces\u003eif (whatevever) {\n\t\u003c4spaces\u003ereturn blah;\n\t\u003c2spaces\u003e}\n\t}\n\nFormatting can be done with astyle using the included style file\nastylerc with the command \"astyle --options=astylerc {source files}\".\nastyle is available at http://astyle.sourceforge.net/\n\nThe corresponding astyle settings for this are provided in our source\ntree in the file named 'astylerc'\n\n\nSubmitting Code\n---------------\n\nIf you are creating a new target your work should include the following files:\n* Yourcode.c and/or Yourcode.h - this is the code required to do your\n  conversions and any support files that your code requires.\n* vecs.c - an updated vecs.c file implementing your conversion code into\n  GPSBabel.\n* Makefile.in - an updated Makefile telling the compiler how to build and link\n  your conversion into GPSBabel\n* testo.d/$TARGET - an updated script that tests your conversion (this should\n  produce no output if all is good, see the current testo script for examples)\n* YourOutput - a sample file of code produced by your function (used in testo\n  and lives in a directory called \"reference\").\n* Documentation - see below.\n\nPlease ensure that you are building and testing against the latest code\nfrom the master branch of the Git repository - Note: code changes sometimes\noccur frequently!\n\nDocumentation\n-------------\n\nHTML and text documentation are generated automatically from DocBook\nsource located in the \"xmldoc\" directory.  That directory contains\ntwo subdirectories of interest: \"formats\" and \"filters\".  If your\ncontribution adds or affects a format, you'll want to be in the \"formats\"\ndirectory.  Otherwise, you'll want to be in the \"filters\" directory.\n\nYou should contribute a file called \"yourname.xml\", where \"yourname\" is the\nname you would give on the command-line to invoke your new format or filter.\nFor example, the arc filter is documented in \"filters/arc.xml\".\n\nThis file contains a general description of your format or filter, any\nlimitations in your support for it, and anything else the end user should\nknow.  For file formats, links to manufacturers' websites are encouraged.\nThe contents of this file are not valid or even well-formed XML on their own;\nthey are included into a larger framework.  If you know DocBook, you should\nensure that the contents of this file will validate if included in a \u003csection\u003e.\nIf you do not know DocBook, see the other files in this directory for examples\nor see http://docbook.org/tdg/en/html/docbook.html for the gory details.  Tags\nof interest will almost certainly include \u003cpara\u003e for paragraphs,\n\u003culink url=\"...\"\u003e for web links, and \u003cscreen format=\"linespecific\"\u003e for\nexample command lines.\n\nFor each option supported by your format or filter, you should also contribute\na file in the \"options\" subdirectory called \"yourname-youroption.xml\", again\nusing the names you would use on the command line to invoke your format or\nfilter with that particular option.  For example, the \"distance\" option to the\n\"arc\" filter is documented in \"filters/options/arc-distance.xml\".  These\nfiles are similar to the general description above, and should meet the same\nvalidation requirements.\n\nAs of this writing, there are two formats that violate this rule: Magellan\nserial and Microsoft Streets \u0026 Trips.  Because those formats have the same\nnames as other formats, their descriptions are located in \"magellan1.xml\" and\n\"msroute1.xml\" respectively.  These are special cases, and you should do your\nbest to ensure that they remain the only special cases.\n\nNote that the automated framework already includes the name and description of\nyour format and its options as described in vecs.c and yourcode.c, so there is\nno need to repeat that information in your documentation.\n\n\nEnjoy!\n\nRobert Lipe,\nrobertlipe@gpsbabel.org\n","funding_links":[],"categories":["\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGPSBabel%2Fgpsbabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGPSBabel%2Fgpsbabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGPSBabel%2Fgpsbabel/lists"}