[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] /dev-kodestil, gentoo, udev, raw1394



Hans Schou <sslug@sslug> writes:

> dvgrab skriver så: File not found.
> Øhm ja? Hvilken file er not found?
> (strace er min ven)

Det er i hvert fald ikke god stil ikke at skrive hvilken fil der ikke
kan findes med mindre det er indlysende. Men så kunnne man sikkert
diskuterer i lang tid hvad der er indlysende...

> Koden i libraw1394, main.c, raw1394_new_handle(void)
> ser sådan ud:
>         handle->fd = open("/dev/raw1394", O_RDWR);
>         if (handle->fd < 0) {
>              free(handle);
>              return NULL;
>         }
>
> Er det pæn kodestil?

Hardcodede filnavne er ikke en god ide.

> Kan man regne med at der findes en /dev/raw1394?

Nej. Det oplever du jo egentlig selv...

Nu kender jeg ikke til firewire, men kunne man ikke forstille sig to
helt seperarte firewire-systemet i en maskine. Hvad så? De kan vel
ikke dele raw-device?

> Ville det ikke have været mere rimeligt med en
> raw1394_new_handle(char *try_this_dev_name)
> og så prøve den først, og så evt. /dev/raw1394
> efterfølgende.

Jeg ville nok finde det noget ubehagligt at hvis jeg beder et program
om at bruge /tmp/dev/somedevice at den så bag om ryggen på mig bruger
/dev/somedevice fordi jeg havde stavet /tmp/dev/somedevice forkert.

Hvis brugeren har angivet et filnavn bør koden (imho) bruge det navn
eller dø. Hvis der ikke er angivet et filnavn kan man falde tilbage på
en standardplacering eller andre heuristikker. 

> Om ikke andet, så kunne man give en returkode der sagde:
> THE_DEVICE_NAME_YOU_GAVE_IS_NOT_FOUND og dvgrab ville så vide
> hvilket navn der rent faktisk var tale om og skrive det på skærmen.

Jeg synes at det C-kodemæssigt er helt fint at returnerer NULL hvis
man ikke kan oprette et handle.

> Om ikke andet, har jeg lavet min egen kode om til:
>         handle->fd = open("/dev/raw1394", O_RDWR);
>         if (handle->fd < 0) {
>                 handle->fd = open("/dev/raw/raw1394", O_RDWR);
>                 if (handle->fd < 0) {
>                         free(handle);
>                         return NULL;
>                 }
>         }
> ikke særligt meget pænere, men det virker....

Jeg havde nok valgt at løse det i udev med en regl der oprettede
/dev/raw1394 som symlink. Så kunne jeg opgraderer det aktuelle
program/library uden at bekymre mig, hvilket jeg finder vigtigere end
æstetikken i et udev-system.

-- 
 Peter Makholm     |      I laugh in the face of danger. Then I hide until
 sslug@sslug |                                          it goes away
 http://hacking.dk |                                             -- Xander


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-11-01, 02:01 CET [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *