Files
libgphoto2/HACKING
Hans Ulrich Niedermann 4af53c1fa2 2001-10-12 Hans Ulrich Niedermann <gp@n-dimensional.de>
* HACKING: reformatted, added not for emacs users
        * README: added hint to gphoto2-cli.txt
        * AUTHORS: fixed typo


git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@2504 67ed7778-7388-44ab-90cf-0a291f65f57c
2001-10-12 19:30:02 +00:00

85 lines
2.2 KiB
Plaintext

If you want to hack on gphoto2 (or a camera driver for gphoto2),
please follow some rules to make our work easier:
camlib
------
Camera libraries are often very sensitive to changes. Therefore,
before you commit any changes, double check with the author that your
changes won't break the driver.
If you want to write a driver for gphoto2, the easiest way to do so
would be to copy over the contents of camlibs/template and fill in
your code.
Use something like CHECK_RESULT (see for example
libgphoto2/filesys.c).
Let's say you write a driver called sillycam. Please set up a file
called sillycam.c containing all gphoto2-specific code (like
camera_init) and another two files called library.c and library.h
containing the "magic", that is all gp_port_[read,write] functions and
the basic logic of the communication. This makes it easier for us to
adapt your code if anything should change in the gphoto2-API.
Use the port provided by camera->port.
Use the filesystem provided by camera->fs and set up the callbacks so
that libgphoto2 can cache listings and file-information.
libgphoto2
----------
If you add code, use the coding style of that file. This is, code like
int
my_func (int arg)
{
int var, res;
/*
* This is a multiline
* comment. Use TAB for
* indentation!
*/
res = gp_some_action (var);
/* This is a simple one-line comment */
if (res < 0) {
gp_debug_printf (GP_DEBUG_HIGH, "core", "Error happened!");
return (res);
}
return (GP_OK);
}
Please always check the return value of gp_-functions! We defined some
handy macros all over the place (like CHECK_RESULT) - by using those,
you'll avoid lots of if {} else {}.
Emacs users may define and use a gphoto-c-mode by putting the
following stuff into their .emacs file:
-----8<------------------------------------------------
;;* gphoto-c-mode
;;*=====================================================================
(defun gphoto-c-mode ()
"C mode with adjusted defaults for gphoto hacking"
(interactive)
(c-mode)
(c-set-style "linux")
(setq indent-tabs-mode t)
(font-lock-mode))
;;
(setq auto-mode-alist (cons '("/home/user/src/gphoto.*\\.[ch]$" . gphoto-c-mode)
auto-mode-alist))
-----8<------------------------------------------------
Local Variables:
mode:text
End: