Updating to fuse kernel version 7.19

This commit is contained in:
wbaumann 2013-09-08 07:54:58 +00:00
parent 06e1569677
commit 7097f3f583
6 changed files with 1102 additions and 622 deletions

View File

@ -1,6 +1,9 @@
ChangeLog for davfs2
--------------------

2013-09-08 Werner Baumann (werner.baumann@onlinehome.de)
* Updating to fuse kernel version 7.19.

2013-08-15 Werner Baumann (werner.baumann@onlinehome.de)
* cache.c:
Fix has_permission (bug #33644).

260
po/cs.po
View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://savannah.nongnu.org/support/?"
"func=additem&group=davfs2\n"
"POT-Creation-Date: 2013-08-09 12:39+0200\n"
"POT-Creation-Date: 2013-09-01 18:45+0200\n"
"PO-Revision-Date: 2007-05-03 19:50+0200\n"
"Last-Translator: Vítězslav Kotrla <vitko@post.cz>\n"
"Language-Team: <cs@li.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bitX-Generator: KBabel 1.11.4\n"
"X-Generator: KBabel 1.11.4\n"

#: src/cache.c:656
#: src/cache.c:650
#, c-format
msgid ""
"connection timed out two times;\n"
@ -26,12 +26,12 @@ msgstr ""
"spojení vypršelo dvakrát;\n"
"zkouším to ještě jednou a naposledy"

#: src/cache.c:661
#: src/cache.c:655
#, c-format
msgid "Last try succeeded.\n"
msgstr "Poslední pokus byl úspěšný.\n"

#: src/cache.c:664
#: src/cache.c:658
#, c-format
msgid ""
"server temporarily unreachable;\n"
@ -40,7 +40,7 @@ msgstr ""
"server je dočasně nedostupný;\n"
"přesto připojuji"

#: src/cache.c:667
#: src/cache.c:661
#, c-format
msgid ""
"Mounting failed.\n"
@ -49,177 +49,177 @@ msgstr ""
"Připojení selhalo;\n"
"%s"

#: src/cache.c:706
#: src/cache.c:700
#, c-format
msgid "can't replace %s with %s"
msgstr "nemohu nahradit %s pomocí %s"

#: src/cache.c:710
#: src/cache.c:704
#, c-format
msgid "error writing new index file %s"
msgstr "chyba při zápisu nového indexového souboru %s"

#: src/cache.c:714
#: src/cache.c:708
#, c-format
msgid "can't create new index file for %s"
msgstr "nemohu vytvořit nový indexový soubor pro %s"

#: src/cache.c:925
#: src/cache.c:911
#, c-format
msgid ""
"File %s exists on the server but should not. Maybe it is an error in the "
"server's LOCK impementation. You may try option 'use_locks 0' in davfs2.conf."
msgstr ""

#: src/cache.c:2512 src/cache.c:2545
#: src/cache.c:2384 src/cache.c:2417
#, c-format
msgid "can't create cache file %s"
msgstr "nemohu vytvořit soubor vyrovnávací paměti %s"

#: src/cache.c:2560
#: src/cache.c:2432
#, c-format
msgid "error writing directory %s"
msgstr "chyba při zápisu adresáře %s"

#: src/cache.c:2723 src/mount_davfs.c:1013
#: src/cache.c:2594 src/mount_davfs.c:1011
#, c-format
msgid "can't read user data base"
msgstr "nemohu přečíst údaje o uživatelích"

#: src/cache.c:2735
#: src/cache.c:2606
#, c-format
msgid "can't open cache directory %s"
msgstr "nemohu otevřít kešovací adresář %s"

#: src/cache.c:2750
#: src/cache.c:2621
#, c-format
msgid "can't create cache directory %s"
msgstr "nemohu vytvořit kešovací adresář %s"

#: src/cache.c:2757
#: src/cache.c:2628
#, c-format
msgid "can't access cache directory %s"
msgstr "nemohu přistoupit ke kešovacímu adresáři %s"

#: src/cache.c:2760
#: src/cache.c:2631
#, c-format
msgid "wrong owner of cache directory %s"
msgstr "chybný vlastník kešovacího adresáře %s"

#: src/cache.c:2764
#: src/cache.c:2635
#, c-format
msgid "wrong permissions set for cache directory %s"
msgstr "pro kešovací adresář %s nastaveno chybné oprávnění"

#: src/cache.c:2794
#: src/cache.c:2665
msgid "found orphaned file in cache:"
msgstr ""

#: src/cache.c:2867
#: src/cache.c:2738
#, c-format
msgid "error parsing %s"
msgstr "chyba při zpracování %s"

#: src/cache.c:2868
#: src/cache.c:2739
#, c-format
msgid " at line %i"
msgstr ""

#: src/cache.c:2913
#: src/cache.c:2784
#, c-format
msgid "open files exceed max cache size by %llu MiBytes"
msgstr ""
"otevřené soubory přesahují limit velikosti vyrovnávací paměti o %llu MiB"

#: src/kernel_interface.c:209
#, c-format
msgid "can't open fuse device"
msgstr "nemohu otevřít fuse zařízení"

#: src/kernel_interface.c:217
#, fuzzy, c-format
msgid "mounting failed"
msgstr "odpojení selhalo"

#: src/kernel_interface.c:226
#: src/kernel_interface.c:219
#, c-format
msgid "can't allocate message buffer"
msgstr "nemohu alokovat buffer pro zprávu"

#: src/mount_davfs.c:294
#: src/kernel_interface.c:246
#, c-format
msgid "can't open fuse device"
msgstr "nemohu otevřít fuse zařízení"

#: src/kernel_interface.c:254
#, fuzzy, c-format
msgid "mounting failed"
msgstr "odpojení selhalo"

#: src/mount_davfs.c:291
#, c-format
msgid "can't start daemon process"
msgstr "nemohu spustit proces na pozadí"

#: src/mount_davfs.c:316
#: src/mount_davfs.c:313
msgid "can't release root privileges"
msgstr "nemohu uvolnit oprávnění uživatele root"

#: src/mount_davfs.c:333
#: src/mount_davfs.c:330
msgid "failed to release tty properly"
msgstr ""

#: src/mount_davfs.c:345
#: src/mount_davfs.c:342
#, c-format
msgid "can't write pid file %s"
msgstr "nemohu zapsat pid souboru %s"

#: src/mount_davfs.c:362
#: src/mount_davfs.c:359
#, c-format
msgid "unmounting %s"
msgstr "odpojuji %s"

#: src/mount_davfs.c:364
#: src/mount_davfs.c:361
msgid "unmounting failed"
msgstr "odpojení selhalo"

#: src/mount_davfs.c:435
#: src/mount_davfs.c:432
#, c-format
msgid "can't change group id"
msgstr "nemohu změnit id skupiny"

#: src/mount_davfs.c:473 src/mount_davfs.c:567 src/mount_davfs.c:593
#: src/mount_davfs.c:470 src/mount_davfs.c:564 src/mount_davfs.c:590
#, c-format
msgid "can't create directory %s"
msgstr "nemohu vytvořit adresář %s"

#: src/mount_davfs.c:477 src/mount_davfs.c:571 src/mount_davfs.c:597
#: src/mount_davfs.c:602 src/mount_davfs.c:610
#: src/mount_davfs.c:474 src/mount_davfs.c:568 src/mount_davfs.c:594
#: src/mount_davfs.c:599 src/mount_davfs.c:607
#, c-format
msgid "can't access directory %s"
msgstr "nemohu přistupovat k adresáři %s"

#: src/mount_davfs.c:483 src/mount_davfs.c:577
#: src/mount_davfs.c:480 src/mount_davfs.c:574
#, c-format
msgid "can't change mode of directory %s"
msgstr "nemohu změnit oprávnění (mode) adresáře %s"

#: src/mount_davfs.c:488 src/mount_davfs.c:583
#: src/mount_davfs.c:485 src/mount_davfs.c:580
#, c-format
msgid "can't change group of directory %s"
msgstr "nemohu změnit skupinu adresáře %s"

#: src/mount_davfs.c:495 src/mount_davfs.c:551
#: src/mount_davfs.c:492 src/mount_davfs.c:548
#, c-format
msgid "file %s has wrong owner"
msgstr "soubor %s má chybného vlastníka"

#: src/mount_davfs.c:499 src/mount_davfs.c:556
#: src/mount_davfs.c:496 src/mount_davfs.c:553
#, c-format
msgid "file %s has wrong permissions"
msgstr "soubor %s má chybná oprávnění"

#: src/mount_davfs.c:628 src/mount_davfs.c:680
#: src/mount_davfs.c:625 src/mount_davfs.c:677
#, c-format
msgid "can't open file %s"
msgstr "nemohu otevřít soubor %s"

#: src/mount_davfs.c:633
#: src/mount_davfs.c:630
#, c-format
msgid "%s is already mounted on %s"
msgstr "%s už je připojeno jako %s"

#: src/mount_davfs.c:655
#: src/mount_davfs.c:652
#, c-format
msgid ""
"found PID file %s.\n"
@ -230,82 +230,82 @@ msgstr ""
"Buď %s používá jiný proces, nebo\n"
"jiné připojení skončilo neobvykle"

#: src/mount_davfs.c:697
#: src/mount_davfs.c:694
#, c-format
msgid "no entry for %s found in %s"
msgstr "pro %s nebyla v %s nalezena žádná položka"

#: src/mount_davfs.c:701
#: src/mount_davfs.c:698
#, c-format
msgid "different URL in %s"
msgstr "v %s je jiné URL"

#: src/mount_davfs.c:704
#: src/mount_davfs.c:701
#, c-format
msgid "different file system type in %s"
msgstr "v %s je jiný souborový systém"

#: src/mount_davfs.c:715
#: src/mount_davfs.c:712
#, c-format
msgid "different config file in %s"
msgstr "v %s je jiný konfigurační soubor"

#: src/mount_davfs.c:721
#: src/mount_davfs.c:718
#, fuzzy, c-format
msgid "different username in %s"
msgstr "v %s je odlišný dir_mode"

#: src/mount_davfs.c:725
#: src/mount_davfs.c:722
#, fuzzy, c-format
msgid "neither option `user' nor option `users' set in %s"
msgstr "volba 'user' není v %s nastavena"

#: src/mount_davfs.c:728
#: src/mount_davfs.c:725
#, c-format
msgid "different mount options in %s"
msgstr "v %s jsou jiné parametry připojení"

#: src/mount_davfs.c:731
#: src/mount_davfs.c:728
#, c-format
msgid "different uid in %s"
msgstr "v %s je odlišné uid"

#: src/mount_davfs.c:733
#: src/mount_davfs.c:730
#, c-format
msgid "different gid in %s"
msgstr "v %s je odlišné gid"

#: src/mount_davfs.c:735
#: src/mount_davfs.c:732
#, c-format
msgid "different dir_mode in %s"
msgstr "v %s je odlišný dir_mode"

#: src/mount_davfs.c:737
#: src/mount_davfs.c:734
#, c-format
msgid "different file_mode in %s"
msgstr "v %s je odlišný file_mode"

#: src/mount_davfs.c:757
#: src/mount_davfs.c:754
#, c-format
msgid "you can't set file owner different from your uid"
msgstr "nemůžete nastavit jiného vlastníka souboru než je vaše uid"

#: src/mount_davfs.c:769
#: src/mount_davfs.c:766
#, c-format
msgid "you must be member of the group of the file system"
msgstr "musíte být členem skupiny souborového systému"

#: src/mount_davfs.c:780
#: src/mount_davfs.c:777
#, c-format
msgid "user %s must be member of group %s"
msgstr "uživatel %s musí být členem skupiny %s"

#: src/mount_davfs.c:800 src/mount_davfs.c:1139
#: src/mount_davfs.c:797 src/mount_davfs.c:1137
#, c-format
msgid "can't change effective user id"
msgstr "nemohu změnit identifikátor efektivního uživatele"

#: src/mount_davfs.c:844 src/umount_davfs.c:92
#: src/mount_davfs.c:841 src/umount_davfs.c:92
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
@ -316,67 +316,67 @@ msgstr ""
"Program je poskytován BEZ JAKÉKOLIV záruky, včetně záruky PRODEJNOSTI či "
"VHODNOSTI K URČITÉMU ÚČELU.\n"

#: src/mount_davfs.c:860 src/umount_davfs.c:117
#: src/mount_davfs.c:857 src/umount_davfs.c:117
#, c-format
msgid "unknown error parsing arguments"
msgstr "neznámá chyba při zpracování argumentů"

#: src/mount_davfs.c:869 src/umount_davfs.c:123
#: src/mount_davfs.c:866 src/umount_davfs.c:123
#, c-format
msgid "missing argument"
msgstr "chybějící argument"

#: src/mount_davfs.c:882
#: src/mount_davfs.c:879
#, c-format
msgid "can't evaluate path of mount point %s"
msgstr "nemohu vyhodnotit cestu k přípojnému bodu %s"

#: src/mount_davfs.c:885 src/umount_davfs.c:125
#: src/mount_davfs.c:882 src/umount_davfs.c:125
#, c-format
msgid "too many arguments"
msgstr "příliš mnoho argumentů"

#: src/mount_davfs.c:892
#: src/mount_davfs.c:889
#, c-format
msgid "A relative mount point must lie within your home directory"
msgstr "Relativní přípojný bod musí ležet ve vašem domovském adresáři"

#: src/mount_davfs.c:897
#: src/mount_davfs.c:894
#, c-format
msgid "no WebDAV-server specified"
msgstr "nebyl zadán žádný WebDAV server"

#: src/mount_davfs.c:900
#: src/mount_davfs.c:897
#, c-format
msgid "invalid URL"
msgstr "neplatné URL"

#: src/mount_davfs.c:930
#: src/mount_davfs.c:927
#, c-format
msgid "user %s does not exist"
msgstr "uživatel %s neexistuje"

#: src/mount_davfs.c:938
#: src/mount_davfs.c:935
#, c-format
msgid "group %s does not exist"
msgstr "skupina %s neexistuje"

#: src/mount_davfs.c:1004
#: src/mount_davfs.c:1002
#, c-format
msgid "program is not setuid root"
msgstr "program není spuštěn jako setuid root"

#: src/mount_davfs.c:1022
#: src/mount_davfs.c:1020
#, c-format
msgid "can't read group data base"
msgstr "nemohu přečíst údaje o skupinách"

#: src/mount_davfs.c:1049 src/mount_davfs.c:1062 src/mount_davfs.c:1064
#: src/mount_davfs.c:1082 src/mount_davfs.c:1084 src/mount_davfs.c:1099
#: src/mount_davfs.c:1047 src/mount_davfs.c:1060 src/mount_davfs.c:1062
#: src/mount_davfs.c:1080 src/mount_davfs.c:1082 src/mount_davfs.c:1097
msgid "Password: "
msgstr "Heslo: "

#: src/mount_davfs.c:1053
#: src/mount_davfs.c:1051
#, fuzzy, c-format
msgid ""
"Please enter the username to authenticate with proxy\n"
@ -386,11 +386,11 @@ msgstr ""
"%s (pokud žádné zadat nechcete, pouze stiskněte enter).\n"
"Uživatelské jméno: "

#: src/mount_davfs.c:1055 src/mount_davfs.c:1075
#: src/mount_davfs.c:1053 src/mount_davfs.c:1073
msgid "Username:"
msgstr ""

#: src/mount_davfs.c:1059
#: src/mount_davfs.c:1057
#, c-format
msgid ""
"Please enter the password to authenticate user %s with proxy\n"
@ -399,7 +399,7 @@ msgstr ""
"Zadejte prosím heslo pro autentizaci uživatele %s na proxy\n"
"%s (pokud žádné zadat nechcete, pouze stiskněte enter).\n"

#: src/mount_davfs.c:1073
#: src/mount_davfs.c:1071
#, fuzzy, c-format
msgid ""
"Please enter the username to authenticate with server\n"
@ -409,7 +409,7 @@ msgstr ""
"%s (nebo pouze stiskně enter, pokud nic zadat nechcete).\n"
"Uživatelské jméno: "

#: src/mount_davfs.c:1079
#: src/mount_davfs.c:1077
#, c-format
msgid ""
"Please enter the password to authenticate user %s with server\n"
@ -418,7 +418,7 @@ msgstr ""
"Zadejte prosím heslo uživatele %s pro autentizaci na serveru\n"
"%s (nebo pouze stiskně enter, pokud nic zadat nechcete).\n"

#: src/mount_davfs.c:1097
#: src/mount_davfs.c:1095
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
@ -427,85 +427,85 @@ msgstr ""
"Zadejte prosím heslo pro dešifrování klientského\n"
"certifikátu %s.\n"

#: src/mount_davfs.c:1104
#: src/mount_davfs.c:1102
#, c-format
msgid "can't decrypt client certificate %s"
msgstr "nemohu dešifrovat klientský certifikát %s"

#: src/mount_davfs.c:1167
#: src/mount_davfs.c:1165
#, c-format
msgid "pid %i, got signal %i"
msgstr "pid %i dostal signál %i"

#: src/mount_davfs.c:1206
#: src/mount_davfs.c:1204
#, c-format
msgid ""
"Warning: can't write entry into mtab, but will mount the file system anyway"
msgstr ""
"Varování: nelze zapsat položku do mtab, přesto souborový systém připojím"

#: src/mount_davfs.c:1232
#: src/mount_davfs.c:1230
#, c-format
msgid "option %s has invalid argument;it must be a decimal number"
msgstr "volba %s má neplatný argument; musí to být číslo v desítkové soustavě"

#: src/mount_davfs.c:1235
#: src/mount_davfs.c:1233
#, c-format
msgid "option %s has invalid argument;it must be an octal number"
msgstr "volba %s má neplatný argument; musí to být číslo v osmičkové soustavě"

#: src/mount_davfs.c:1238
#: src/mount_davfs.c:1236
#, c-format
msgid "option %s has invalid argument;it must be a number"
msgstr "volba %s má neplatný argument; musí to být číslo"

#: src/mount_davfs.c:1513
#: src/mount_davfs.c:1476
#, c-format
msgid "option %s requires argument"
msgstr "volba %s vyžaduje argument"

#: src/mount_davfs.c:1605
#: src/mount_davfs.c:1568
#, c-format
msgid "Unknown option %s.\n"
msgstr "Neznámá volba %s.\n"

#: src/mount_davfs.c:1976
#: src/mount_davfs.c:1937
#, fuzzy, c-format
msgid "can't read certificate %s"
msgstr "nelze přečíst klientský certifikát %s"

#: src/mount_davfs.c:2008 src/mount_davfs.c:2021
#: src/mount_davfs.c:1969 src/mount_davfs.c:1982
#, c-format
msgid "can't read client certificate %s"
msgstr "nelze přečíst klientský certifikát %s"

#: src/mount_davfs.c:2012
#: src/mount_davfs.c:1973
#, c-format
msgid "client certificate file %s has wrong owner"
msgstr "klientský certifikát %s má chybného vlastníka"

#: src/mount_davfs.c:2016
#: src/mount_davfs.c:1977
#, c-format
msgid "client certificate file %s has wrong permissions"
msgstr "soubor s klientským certifikátem %s má chybná oprávnění"

#: src/mount_davfs.c:2038 src/mount_davfs.c:2266
#: src/mount_davfs.c:1999 src/mount_davfs.c:2227
#, fuzzy, c-format
msgid "opening %s failed"
msgstr "odpojení selhalo"

#: src/mount_davfs.c:2059 src/mount_davfs.c:2104 src/mount_davfs.c:2196
#: src/mount_davfs.c:2293 src/mount_davfs.c:2351 src/mount_davfs.c:2364
#: src/mount_davfs.c:2020 src/mount_davfs.c:2065 src/mount_davfs.c:2157
#: src/mount_davfs.c:2254 src/mount_davfs.c:2312 src/mount_davfs.c:2325
#, c-format
msgid "malformed line"
msgstr "špatně zapsaný řádek"

#: src/mount_davfs.c:2174 src/mount_davfs.c:2190
#: src/mount_davfs.c:2135 src/mount_davfs.c:2151
#, c-format
msgid "unknown option"
msgstr "neznámá volba"

#: src/mount_davfs.c:2496
#: src/mount_davfs.c:2457
#, c-format
msgid ""
"Usage:\n"
@ -518,7 +518,7 @@ msgstr ""
" %s -h,--help : vytiskne tuto zprávu\n"
"\n"

#: src/mount_davfs.c:2500
#: src/mount_davfs.c:2461
#, c-format
msgid ""
"To mount a WebDAV-resource don't call %s directly, but use\n"
@ -527,7 +527,7 @@ msgstr ""
"Pro připojení zdroje WebDAV nevolejte přímo %s, ale\n"
"použijte místo toho `mount'.\n"

#: src/mount_davfs.c:2502
#: src/mount_davfs.c:2463
#, c-format
msgid ""
" mount <mountpoint> : or\n"
@ -538,7 +538,7 @@ msgstr ""
" mount <url_serveru> : připojí zdroj WebDAV tak, jak je zadáno\n"
" v /etc/fstab.\n"

#: src/mount_davfs.c:2505
#: src/mount_davfs.c:2466
#, c-format
msgid ""
" mount -t davfs <server-url> <mountpoint> [-o options]\n"
@ -555,7 +555,7 @@ msgstr ""
" označuje seznam voleb oddělených čárkou.\n"
"\n"

#: src/mount_davfs.c:2510
#: src/mount_davfs.c:2471
#, c-format
msgid ""
"Recognised options:\n"
@ -574,7 +574,7 @@ msgstr ""
" file_mode= : výchozí mode souboru (v osmičkové soustavě)\n"
" dir_mode= : výchozí mode adresáře (v osmičkové soustavě)\n"

#: src/mount_davfs.c:2516
#: src/mount_davfs.c:2477
#, c-format
msgid ""
" ro : mount read-only\n"
@ -674,96 +674,96 @@ msgstr "%s: čekám, než si %s (pid %s) sesynchronizuje vyrovnávací paměť.
msgid "an error occured while waiting; please wait for %s to terminate"
msgstr "při čekání došlo k chybě; čekejte prosím až %s skončí"

#: src/webdav.c:360
#: src/webdav.c:337
#, fuzzy, c-format
msgid "socket library initialization failed"
msgstr "selhala inicializace knihovny socketů"

#: src/webdav.c:372
#: src/webdav.c:349
#, c-format
msgid "can't open stream to log neon-messages"
msgstr ""

#: src/webdav.c:413
#: src/webdav.c:380
#, c-format
msgid "neon library does not support TLS/SSL"
msgstr "knihovna neon nepodporuje TLS/SSL"

#: src/webdav.c:475 src/webdav.c:478
#: src/webdav.c:440 src/webdav.c:443
#, c-format
msgid "mounting failed; the server does not support WebDAV"
msgstr "připojení selhalo; server nepodporuje WebDAV"

#: src/webdav.c:486
#: src/webdav.c:451
#, c-format
msgid "warning: the server does not support locks"
msgstr "varování: server nepodporuje zámky"

#: src/webdav.c:1566
#: src/webdav.c:1454
msgid "authentication failure:"
msgstr "selhání autentizace:"

#: src/webdav.c:1604
#: src/webdav.c:1492
#, c-format
msgid "%i can't open cache file"
msgstr "%i nemůže otevřít soubor vyrovnávací paměti"

#: src/webdav.c:1612
#: src/webdav.c:1500
#, c-format
msgid "%i error writing to cache file"
msgstr "%i chyba při zápisu do souboru vyrovnávací paměti"

#: src/webdav.c:1922 src/webdav.c:1951 src/webdav.c:1988
#: src/webdav.c:1741 src/webdav.c:1770 src/webdav.c:1807
#, c-format
msgid "the server certificate is not trusted"
msgstr "certifikát serveru je nedůvěryhodný"

#: src/webdav.c:1931 src/webdav.c:1934
#: src/webdav.c:1750 src/webdav.c:1753
#, c-format
msgid "error processing server certificate"
msgstr "chyba při zpracování certifikátu serveru"

#: src/webdav.c:1945 src/webdav.c:1979
#: src/webdav.c:1764 src/webdav.c:1798
#, c-format
msgid "the server certificate is not yet valid"
msgstr "certifikát serveru zatím není platný"

#: src/webdav.c:1947 src/webdav.c:1982
#: src/webdav.c:1766 src/webdav.c:1801
#, c-format
msgid "the server certificate has expired"
msgstr "platnost certifikátu serveru vypršela"

#: src/webdav.c:1949 src/webdav.c:1985
#: src/webdav.c:1768 src/webdav.c:1804
#, c-format
msgid "the server certificate does not match the server name"
msgstr "certifikát serveru nedopovídá jménu serveru"

#: src/webdav.c:1953 src/webdav.c:1991
#: src/webdav.c:1772 src/webdav.c:1810
#, c-format
msgid "unknown certificate error"
msgstr "neznámá chyba certifikátu"

#: src/webdav.c:1954
#: src/webdav.c:1773
#, c-format
msgid " issuer: %s"
msgstr " vydavatel: %s"

#: src/webdav.c:1956
#: src/webdav.c:1775
#, c-format
msgid " subject: %s"
msgstr " subjekt: %s"

#: src/webdav.c:1958
#: src/webdav.c:1777
#, c-format
msgid " identity: %s"
msgstr " identita: %s"

#: src/webdav.c:1960
#: src/webdav.c:1779
#, c-format
msgid " fingerprint: %s"
msgstr " otisk: %s"

#: src/webdav.c:1962
#: src/webdav.c:1781
#, c-format
msgid ""
"You only should accept this certificate, if you can\n"
@ -774,27 +774,27 @@ msgstr ""
"ověřit jeho otisk! Server může být podvržen nebo může\n"
"dojít k útoku s prostředníkem (man-in-the-middle attack).\n"

#: src/webdav.c:1965
#: src/webdav.c:1784
#, c-format
msgid "Accept certificate for this session? [y,N] "
msgstr "Přijmout certifikát pro toto sezení? [y,N] "

#: src/webdav.c:1992
#: src/webdav.c:1811
#, c-format
msgid " issuer: %s"
msgstr " vydavatel: %s"

#: src/webdav.c:1993
#: src/webdav.c:1812
#, c-format
msgid " subject: %s"
msgstr " subjekt: %s"

#: src/webdav.c:1994
#: src/webdav.c:1813
#, c-format
msgid " identity: %s"
msgstr " identita: %s"

#: src/webdav.c:1997
#: src/webdav.c:1816
msgid " accepted by user"
msgstr " přijat uživatelem"


View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: davfs2 1.4.6\n"
"Report-Msgid-Bugs-To: http://savannah.nongnu.org/support/?"
"func=additem&group=davfs2\n"
"POT-Creation-Date: 2013-08-09 12:39+0200\n"
"POT-Creation-Date: 2013-09-01 18:45+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,202 +18,202 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: src/cache.c:656
#: src/cache.c:650
#, c-format
msgid ""
"connection timed out two times;\n"
"trying one last time"
msgstr ""

#: src/cache.c:661
#: src/cache.c:655
#, c-format
msgid "Last try succeeded.\n"
msgstr ""

#: src/cache.c:664
#: src/cache.c:658
#, c-format
msgid ""
"server temporarily unreachable;\n"
"mounting anyway"
msgstr ""

#: src/cache.c:667
#: src/cache.c:661
#, c-format
msgid ""
"Mounting failed.\n"
"%s"
msgstr ""

#: src/cache.c:706
#: src/cache.c:700
#, c-format
msgid "can't replace %s with %s"
msgstr ""

#: src/cache.c:710
#: src/cache.c:704
#, c-format
msgid "error writing new index file %s"
msgstr ""

#: src/cache.c:714
#: src/cache.c:708
#, c-format
msgid "can't create new index file for %s"
msgstr ""

#: src/cache.c:925
#: src/cache.c:911
#, c-format
msgid ""
"File %s exists on the server but should not. Maybe it is an error in the "
"server's LOCK impementation. You may try option 'use_locks 0' in davfs2.conf."
msgstr ""

#: src/cache.c:2512 src/cache.c:2545
#: src/cache.c:2384 src/cache.c:2417
#, c-format
msgid "can't create cache file %s"
msgstr ""

#: src/cache.c:2560
#: src/cache.c:2432
#, c-format
msgid "error writing directory %s"
msgstr ""

#: src/cache.c:2723 src/mount_davfs.c:1013
#: src/cache.c:2594 src/mount_davfs.c:1011
#, c-format
msgid "can't read user data base"
msgstr ""

#: src/cache.c:2735
#: src/cache.c:2606
#, c-format
msgid "can't open cache directory %s"
msgstr ""

#: src/cache.c:2750
#: src/cache.c:2621
#, c-format
msgid "can't create cache directory %s"
msgstr ""

#: src/cache.c:2757
#: src/cache.c:2628
#, c-format
msgid "can't access cache directory %s"
msgstr ""

#: src/cache.c:2760
#: src/cache.c:2631
#, c-format
msgid "wrong owner of cache directory %s"
msgstr ""

#: src/cache.c:2764
#: src/cache.c:2635
#, c-format
msgid "wrong permissions set for cache directory %s"
msgstr ""

#: src/cache.c:2794
#: src/cache.c:2665
msgid "found orphaned file in cache:"
msgstr ""

#: src/cache.c:2867
#: src/cache.c:2738
#, c-format
msgid "error parsing %s"
msgstr ""

#: src/cache.c:2868
#: src/cache.c:2739
#, c-format
msgid " at line %i"
msgstr ""

#: src/cache.c:2913
#: src/cache.c:2784
#, c-format
msgid "open files exceed max cache size by %llu MiBytes"
msgstr ""

#: src/kernel_interface.c:209
#, c-format
msgid "can't open fuse device"
msgstr ""

#: src/kernel_interface.c:217
#, c-format
msgid "mounting failed"
msgstr ""

#: src/kernel_interface.c:226
#: src/kernel_interface.c:219
#, c-format
msgid "can't allocate message buffer"
msgstr ""

#: src/mount_davfs.c:294
#: src/kernel_interface.c:246
#, c-format
msgid "can't open fuse device"
msgstr ""

#: src/kernel_interface.c:254
#, c-format
msgid "mounting failed"
msgstr ""

#: src/mount_davfs.c:291
#, c-format
msgid "can't start daemon process"
msgstr ""

#: src/mount_davfs.c:316
#: src/mount_davfs.c:313
msgid "can't release root privileges"
msgstr ""

#: src/mount_davfs.c:333
#: src/mount_davfs.c:330
msgid "failed to release tty properly"
msgstr ""

#: src/mount_davfs.c:345
#: src/mount_davfs.c:342
#, c-format
msgid "can't write pid file %s"
msgstr ""

#: src/mount_davfs.c:362
#: src/mount_davfs.c:359
#, c-format
msgid "unmounting %s"
msgstr ""

#: src/mount_davfs.c:364
#: src/mount_davfs.c:361
msgid "unmounting failed"
msgstr ""

#: src/mount_davfs.c:435
#: src/mount_davfs.c:432
#, c-format
msgid "can't change group id"
msgstr ""

#: src/mount_davfs.c:473 src/mount_davfs.c:567 src/mount_davfs.c:593
#: src/mount_davfs.c:470 src/mount_davfs.c:564 src/mount_davfs.c:590
#, c-format
msgid "can't create directory %s"
msgstr ""

#: src/mount_davfs.c:477 src/mount_davfs.c:571 src/mount_davfs.c:597
#: src/mount_davfs.c:602 src/mount_davfs.c:610
#: src/mount_davfs.c:474 src/mount_davfs.c:568 src/mount_davfs.c:594
#: src/mount_davfs.c:599 src/mount_davfs.c:607
#, c-format
msgid "can't access directory %s"
msgstr ""

#: src/mount_davfs.c:483 src/mount_davfs.c:577
#: src/mount_davfs.c:480 src/mount_davfs.c:574
#, c-format
msgid "can't change mode of directory %s"
msgstr ""

#: src/mount_davfs.c:488 src/mount_davfs.c:583
#: src/mount_davfs.c:485 src/mount_davfs.c:580
#, c-format
msgid "can't change group of directory %s"
msgstr ""

#: src/mount_davfs.c:495 src/mount_davfs.c:551
#: src/mount_davfs.c:492 src/mount_davfs.c:548
#, c-format
msgid "file %s has wrong owner"
msgstr ""

#: src/mount_davfs.c:499 src/mount_davfs.c:556
#: src/mount_davfs.c:496 src/mount_davfs.c:553
#, c-format
msgid "file %s has wrong permissions"
msgstr ""

#: src/mount_davfs.c:628 src/mount_davfs.c:680
#: src/mount_davfs.c:625 src/mount_davfs.c:677
#, c-format
msgid "can't open file %s"
msgstr ""

#: src/mount_davfs.c:633
#: src/mount_davfs.c:630
#, c-format
msgid "%s is already mounted on %s"
msgstr ""

#: src/mount_davfs.c:655
#: src/mount_davfs.c:652
#, c-format
msgid ""
"found PID file %s.\n"
@ -221,265 +221,265 @@ msgid ""
"or another mount process ended irregular"
msgstr ""

#: src/mount_davfs.c:697
#: src/mount_davfs.c:694
#, c-format
msgid "no entry for %s found in %s"
msgstr ""

#: src/mount_davfs.c:701
#: src/mount_davfs.c:698
#, c-format
msgid "different URL in %s"
msgstr ""

#: src/mount_davfs.c:704
#: src/mount_davfs.c:701
#, c-format
msgid "different file system type in %s"
msgstr ""

#: src/mount_davfs.c:715
#: src/mount_davfs.c:712
#, c-format
msgid "different config file in %s"
msgstr ""

#: src/mount_davfs.c:721
#: src/mount_davfs.c:718
#, c-format
msgid "different username in %s"
msgstr ""

#: src/mount_davfs.c:725
#: src/mount_davfs.c:722
#, c-format
msgid "neither option `user' nor option `users' set in %s"
msgstr ""

#: src/mount_davfs.c:728
#: src/mount_davfs.c:725
#, c-format
msgid "different mount options in %s"
msgstr ""

#: src/mount_davfs.c:731
#: src/mount_davfs.c:728
#, c-format
msgid "different uid in %s"
msgstr ""

#: src/mount_davfs.c:733
#: src/mount_davfs.c:730
#, c-format
msgid "different gid in %s"
msgstr ""

#: src/mount_davfs.c:735
#: src/mount_davfs.c:732
#, c-format
msgid "different dir_mode in %s"
msgstr ""

#: src/mount_davfs.c:737
#: src/mount_davfs.c:734
#, c-format
msgid "different file_mode in %s"
msgstr ""

#: src/mount_davfs.c:757
#: src/mount_davfs.c:754
#, c-format
msgid "you can't set file owner different from your uid"
msgstr ""

#: src/mount_davfs.c:769
#: src/mount_davfs.c:766
#, c-format
msgid "you must be member of the group of the file system"
msgstr ""

#: src/mount_davfs.c:780
#: src/mount_davfs.c:777
#, c-format
msgid "user %s must be member of group %s"
msgstr ""

#: src/mount_davfs.c:800 src/mount_davfs.c:1139
#: src/mount_davfs.c:797 src/mount_davfs.c:1137
#, c-format
msgid "can't change effective user id"
msgstr ""

#: src/mount_davfs.c:844 src/umount_davfs.c:92
#: src/mount_davfs.c:841 src/umount_davfs.c:92
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""

#: src/mount_davfs.c:860 src/umount_davfs.c:117
#: src/mount_davfs.c:857 src/umount_davfs.c:117
#, c-format
msgid "unknown error parsing arguments"
msgstr ""

#: src/mount_davfs.c:869 src/umount_davfs.c:123
#: src/mount_davfs.c:866 src/umount_davfs.c:123
#, c-format
msgid "missing argument"
msgstr ""

#: src/mount_davfs.c:882
#: src/mount_davfs.c:879
#, c-format
msgid "can't evaluate path of mount point %s"
msgstr ""

#: src/mount_davfs.c:885 src/umount_davfs.c:125
#: src/mount_davfs.c:882 src/umount_davfs.c:125
#, c-format
msgid "too many arguments"
msgstr ""

#: src/mount_davfs.c:892
#: src/mount_davfs.c:889
#, c-format
msgid "A relative mount point must lie within your home directory"
msgstr ""

#: src/mount_davfs.c:897
#: src/mount_davfs.c:894
#, c-format
msgid "no WebDAV-server specified"
msgstr ""

#: src/mount_davfs.c:900
#: src/mount_davfs.c:897
#, c-format
msgid "invalid URL"
msgstr ""

#: src/mount_davfs.c:930
#: src/mount_davfs.c:927
#, c-format
msgid "user %s does not exist"
msgstr ""

#: src/mount_davfs.c:938
#: src/mount_davfs.c:935
#, c-format
msgid "group %s does not exist"
msgstr ""

#: src/mount_davfs.c:1004
#: src/mount_davfs.c:1002
#, c-format
msgid "program is not setuid root"
msgstr ""

#: src/mount_davfs.c:1022
#: src/mount_davfs.c:1020
#, c-format
msgid "can't read group data base"
msgstr ""

#: src/mount_davfs.c:1049 src/mount_davfs.c:1062 src/mount_davfs.c:1064
#: src/mount_davfs.c:1082 src/mount_davfs.c:1084 src/mount_davfs.c:1099
#: src/mount_davfs.c:1047 src/mount_davfs.c:1060 src/mount_davfs.c:1062
#: src/mount_davfs.c:1080 src/mount_davfs.c:1082 src/mount_davfs.c:1097
msgid "Password: "
msgstr ""

#: src/mount_davfs.c:1053
#: src/mount_davfs.c:1051
#, c-format
msgid ""
"Please enter the username to authenticate with proxy\n"
"%s or hit enter for none.\n"
msgstr ""

#: src/mount_davfs.c:1055 src/mount_davfs.c:1075
#: src/mount_davfs.c:1053 src/mount_davfs.c:1073
msgid "Username:"
msgstr ""

#: src/mount_davfs.c:1059
#: src/mount_davfs.c:1057
#, c-format
msgid ""
"Please enter the password to authenticate user %s with proxy\n"
"%s or hit enter for none.\n"
msgstr ""

#: src/mount_davfs.c:1073
#: src/mount_davfs.c:1071
#, c-format
msgid ""
"Please enter the username to authenticate with server\n"
"%s or hit enter for none.\n"
msgstr ""

#: src/mount_davfs.c:1079
#: src/mount_davfs.c:1077
#, c-format
msgid ""
"Please enter the password to authenticate user %s with server\n"
"%s or hit enter for none.\n"
msgstr ""

#: src/mount_davfs.c:1097
#: src/mount_davfs.c:1095
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
"certificate %s.\n"
msgstr ""

#: src/mount_davfs.c:1104
#: src/mount_davfs.c:1102
#, c-format
msgid "can't decrypt client certificate %s"
msgstr ""

#: src/mount_davfs.c:1167
#: src/mount_davfs.c:1165
#, c-format
msgid "pid %i, got signal %i"
msgstr ""

#: src/mount_davfs.c:1206
#: src/mount_davfs.c:1204
#, c-format
msgid ""
"Warning: can't write entry into mtab, but will mount the file system anyway"
msgstr ""

#: src/mount_davfs.c:1232
#: src/mount_davfs.c:1230
#, c-format
msgid "option %s has invalid argument;it must be a decimal number"
msgstr ""

#: src/mount_davfs.c:1235
#: src/mount_davfs.c:1233
#, c-format
msgid "option %s has invalid argument;it must be an octal number"
msgstr ""

#: src/mount_davfs.c:1238
#: src/mount_davfs.c:1236
#, c-format
msgid "option %s has invalid argument;it must be a number"
msgstr ""

#: src/mount_davfs.c:1513
#: src/mount_davfs.c:1476
#, c-format
msgid "option %s requires argument"
msgstr ""

#: src/mount_davfs.c:1605
#: src/mount_davfs.c:1568
#, c-format
msgid "Unknown option %s.\n"
msgstr ""

#: src/mount_davfs.c:1976
#: src/mount_davfs.c:1937
#, c-format
msgid "can't read certificate %s"
msgstr ""

#: src/mount_davfs.c:2008 src/mount_davfs.c:2021
#: src/mount_davfs.c:1969 src/mount_davfs.c:1982
#, c-format
msgid "can't read client certificate %s"
msgstr ""

#: src/mount_davfs.c:2012
#: src/mount_davfs.c:1973
#, c-format
msgid "client certificate file %s has wrong owner"
msgstr ""

#: src/mount_davfs.c:2016
#: src/mount_davfs.c:1977
#, c-format
msgid "client certificate file %s has wrong permissions"
msgstr ""

#: src/mount_davfs.c:2038 src/mount_davfs.c:2266
#: src/mount_davfs.c:1999 src/mount_davfs.c:2227
#, c-format
msgid "opening %s failed"
msgstr ""

#: src/mount_davfs.c:2059 src/mount_davfs.c:2104 src/mount_davfs.c:2196
#: src/mount_davfs.c:2293 src/mount_davfs.c:2351 src/mount_davfs.c:2364
#: src/mount_davfs.c:2020 src/mount_davfs.c:2065 src/mount_davfs.c:2157
#: src/mount_davfs.c:2254 src/mount_davfs.c:2312 src/mount_davfs.c:2325
#, c-format
msgid "malformed line"
msgstr ""

#: src/mount_davfs.c:2174 src/mount_davfs.c:2190
#: src/mount_davfs.c:2135 src/mount_davfs.c:2151
#, c-format
msgid "unknown option"
msgstr ""

#: src/mount_davfs.c:2496
#: src/mount_davfs.c:2457
#, c-format
msgid ""
"Usage:\n"
@ -488,14 +488,14 @@ msgid ""
"\n"
msgstr ""

#: src/mount_davfs.c:2500
#: src/mount_davfs.c:2461
#, c-format
msgid ""
"To mount a WebDAV-resource don't call %s directly, but use\n"
"`mount' instead.\n"
msgstr ""

#: src/mount_davfs.c:2502
#: src/mount_davfs.c:2463
#, c-format
msgid ""
" mount <mountpoint> : or\n"
@ -503,7 +503,7 @@ msgid ""
" /etc/fstab.\n"
msgstr ""

#: src/mount_davfs.c:2505
#: src/mount_davfs.c:2466
#, c-format
msgid ""
" mount -t davfs <server-url> <mountpoint> [-o options]\n"
@ -514,7 +514,7 @@ msgid ""
"\n"
msgstr ""

#: src/mount_davfs.c:2510
#: src/mount_davfs.c:2471
#, c-format
msgid ""
"Recognised options:\n"
@ -525,7 +525,7 @@ msgid ""
" dir_mode= : default directory mode (octal)\n"
msgstr ""

#: src/mount_davfs.c:2516
#: src/mount_davfs.c:2477
#, c-format
msgid ""
" ro : mount read-only\n"
@ -600,96 +600,96 @@ msgstr ""
msgid "an error occured while waiting; please wait for %s to terminate"
msgstr ""

#: src/webdav.c:360
#: src/webdav.c:337
#, c-format
msgid "socket library initialization failed"
msgstr ""

#: src/webdav.c:372
#: src/webdav.c:349
#, c-format
msgid "can't open stream to log neon-messages"
msgstr ""

#: src/webdav.c:413
#: src/webdav.c:380
#, c-format
msgid "neon library does not support TLS/SSL"
msgstr ""

#: src/webdav.c:475 src/webdav.c:478
#: src/webdav.c:440 src/webdav.c:443
#, c-format
msgid "mounting failed; the server does not support WebDAV"
msgstr ""

#: src/webdav.c:486
#: src/webdav.c:451
#, c-format
msgid "warning: the server does not support locks"
msgstr ""

#: src/webdav.c:1566
#: src/webdav.c:1454
msgid "authentication failure:"
msgstr ""

#: src/webdav.c:1604
#: src/webdav.c:1492
#, c-format
msgid "%i can't open cache file"
msgstr ""

#: src/webdav.c:1612
#: src/webdav.c:1500
#, c-format
msgid "%i error writing to cache file"
msgstr ""

#: src/webdav.c:1922 src/webdav.c:1951 src/webdav.c:1988
#: src/webdav.c:1741 src/webdav.c:1770 src/webdav.c:1807
#, c-format
msgid "the server certificate is not trusted"
msgstr ""

#: src/webdav.c:1931 src/webdav.c:1934
#: src/webdav.c:1750 src/webdav.c:1753
#, c-format
msgid "error processing server certificate"
msgstr ""

#: src/webdav.c:1945 src/webdav.c:1979
#: src/webdav.c:1764 src/webdav.c:1798
#, c-format
msgid "the server certificate is not yet valid"
msgstr ""

#: src/webdav.c:1947 src/webdav.c:1982
#: src/webdav.c:1766 src/webdav.c:1801
#, c-format
msgid "the server certificate has expired"
msgstr ""

#: src/webdav.c:1949 src/webdav.c:1985
#: src/webdav.c:1768 src/webdav.c:1804
#, c-format
msgid "the server certificate does not match the server name"
msgstr ""

#: src/webdav.c:1953 src/webdav.c:1991
#: src/webdav.c:1772 src/webdav.c:1810
#, c-format
msgid "unknown certificate error"
msgstr ""

#: src/webdav.c:1954
#: src/webdav.c:1773
#, c-format
msgid " issuer: %s"
msgstr ""

#: src/webdav.c:1956
#: src/webdav.c:1775
#, c-format
msgid " subject: %s"
msgstr ""

#: src/webdav.c:1958
#: src/webdav.c:1777
#, c-format
msgid " identity: %s"
msgstr ""

#: src/webdav.c:1960
#: src/webdav.c:1779
#, c-format
msgid " fingerprint: %s"
msgstr ""

#: src/webdav.c:1962
#: src/webdav.c:1781
#, c-format
msgid ""
"You only should accept this certificate, if you can\n"
@ -697,26 +697,26 @@ msgid ""
"or there might be a man-in-the-middle-attack.\n"
msgstr ""

#: src/webdav.c:1965
#: src/webdav.c:1784
#, c-format
msgid "Accept certificate for this session? [y,N] "
msgstr ""

#: src/webdav.c:1992
#: src/webdav.c:1811
#, c-format
msgid " issuer: %s"
msgstr ""

#: src/webdav.c:1993
#: src/webdav.c:1812
#, c-format
msgid " subject: %s"
msgstr ""

#: src/webdav.c:1994
#: src/webdav.c:1813
#, c-format
msgid " identity: %s"
msgstr ""

#: src/webdav.c:1997
#: src/webdav.c:1816
msgid " accepted by user"
msgstr ""

262
po/de.po
View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: davfs2 1.5.0\n"
"Report-Msgid-Bugs-To: http://savannah.nongnu.org/support/?"
"func=additem&group=davfs2\n"
"POT-Creation-Date: 2013-08-09 12:39+0200\n"
"POT-Creation-Date: 2013-09-01 18:45+0200\n"
"PO-Revision-Date: 2013-08-09 12:49+0100\n"
"Last-Translator: Werner Baumann <werner.baumann@onlinehome.de>\n"
"Language-Team: \n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: src/cache.c:656
#: src/cache.c:650
#, c-format
msgid ""
"connection timed out two times;\n"
@ -26,12 +26,12 @@ msgstr ""
"die Verbindung wurde zweimal wegen Zeitüberschreitung abgebrochen;\n"
"ich versuche es zum letzten mal"

#: src/cache.c:661
#: src/cache.c:655
#, c-format
msgid "Last try succeeded.\n"
msgstr "Der letzte Versuch war erfolgreich.\n"

#: src/cache.c:664
#: src/cache.c:658
#, c-format
msgid ""
"server temporarily unreachable;\n"
@ -40,7 +40,7 @@ msgstr ""
"der Server ist zur Zeit nicht erreichbar;\n"
"das Dateisystem wird trotzdem eingehängt"

#: src/cache.c:667
#: src/cache.c:661
#, c-format
msgid ""
"Mounting failed.\n"
@ -49,22 +49,22 @@ msgstr ""
"das Einhängen schlug fehl;\n"
"%s"

#: src/cache.c:706
#: src/cache.c:700
#, c-format
msgid "can't replace %s with %s"
msgstr "kann %s nicht durch %s ersetzen"

#: src/cache.c:710
#: src/cache.c:704
#, c-format
msgid "error writing new index file %s"
msgstr "Fehler beim Schreiben der neuen Indexdatei %s"

#: src/cache.c:714
#: src/cache.c:708
#, c-format
msgid "can't create new index file for %s"
msgstr "kann keine neue Indexdatei für %s erzeugen"

#: src/cache.c:925
#: src/cache.c:911
#, c-format
msgid ""
"File %s exists on the server but should not. Maybe it is an error in the "
@ -74,156 +74,156 @@ msgstr ""
"behandelt der Server LOCK-Requests fehlerhaft. Du kannst es mit der Option "
"'use_locks 0' in davfs2.conf versuchen."

#: src/cache.c:2512 src/cache.c:2545
#: src/cache.c:2384 src/cache.c:2417
#, c-format
msgid "can't create cache file %s"
msgstr "kann die Cachedatei %s nicht erzeugen"

#: src/cache.c:2560
#: src/cache.c:2432
#, c-format
msgid "error writing directory %s"
msgstr "Fehler beim Schreiben des Verzeichnisses %s"

#: src/cache.c:2723 src/mount_davfs.c:1013
#: src/cache.c:2594 src/mount_davfs.c:1011
#, c-format
msgid "can't read user data base"
msgstr "kann die Benutzerdatenbank nicht lesen"

#: src/cache.c:2735
#: src/cache.c:2606
#, c-format
msgid "can't open cache directory %s"
msgstr "kann das Cacheverzeichnis %s nicht öffnen"

#: src/cache.c:2750
#: src/cache.c:2621
#, c-format
msgid "can't create cache directory %s"
msgstr "kann das Cacheverzeichnis %s nicht erzeugen"

#: src/cache.c:2757
#: src/cache.c:2628
#, c-format
msgid "can't access cache directory %s"
msgstr "Zugriff auf das Cachverzeichnis %s verweigert"

#: src/cache.c:2760
#: src/cache.c:2631
#, c-format
msgid "wrong owner of cache directory %s"
msgstr "das Cacheverzeichnis %s hat den falschen Besitzer"

#: src/cache.c:2764
#: src/cache.c:2635
#, c-format
msgid "wrong permissions set for cache directory %s"
msgstr "das Cachverzeichnis %s hat die falschen Dateirechte"

#: src/cache.c:2794
#: src/cache.c:2665
msgid "found orphaned file in cache:"
msgstr "fand verwaiste Datei im Cache:"

#: src/cache.c:2867
#: src/cache.c:2738
#, c-format
msgid "error parsing %s"
msgstr "Syntaxfehler in %s"

#: src/cache.c:2868
#: src/cache.c:2739
#, c-format
msgid " at line %i"
msgstr " in Zeile %i"

#: src/cache.c:2913
#: src/cache.c:2784
#, c-format
msgid "open files exceed max cache size by %llu MiBytes"
msgstr ""
"Die Größe der offenen Dateien überschreitet die maximale Größe des Cache um "
"%llu MiBytes"

#: src/kernel_interface.c:209
#, c-format
msgid "can't open fuse device"
msgstr "kann die fuse-Gerätedatei nicht öffnen"

#: src/kernel_interface.c:217
#, c-format
msgid "mounting failed"
msgstr "das Aushängen schlug fehl"

#: src/kernel_interface.c:226
#: src/kernel_interface.c:219
#, c-format
msgid "can't allocate message buffer"
msgstr "kein Speicher für den Nachrichtenpuffer verfügbar"

#: src/mount_davfs.c:294
#: src/kernel_interface.c:246
#, c-format
msgid "can't open fuse device"
msgstr "kann die fuse-Gerätedatei nicht öffnen"

#: src/kernel_interface.c:254
#, c-format
msgid "mounting failed"
msgstr "das Aushängen schlug fehl"

#: src/mount_davfs.c:291
#, c-format
msgid "can't start daemon process"
msgstr "kann den Hintergrundprozess nicht starten"

#: src/mount_davfs.c:316
#: src/mount_davfs.c:313
msgid "can't release root privileges"
msgstr "ich werde die root-Rechte nicht los"

#: src/mount_davfs.c:333
#: src/mount_davfs.c:330
msgid "failed to release tty properly"
msgstr "kann das Terminal nicht freigeben"

#: src/mount_davfs.c:345
#: src/mount_davfs.c:342
#, c-format
msgid "can't write pid file %s"
msgstr "kann die PID-Datei %s nicht schreiben"

#: src/mount_davfs.c:362
#: src/mount_davfs.c:359
#, c-format
msgid "unmounting %s"
msgstr "hänge %s aus"

#: src/mount_davfs.c:364
#: src/mount_davfs.c:361
msgid "unmounting failed"
msgstr "das Aushängen schlug fehl"

#: src/mount_davfs.c:435
#: src/mount_davfs.c:432
#, c-format
msgid "can't change group id"
msgstr "kann die Gruppenkennung nicht ändern"

#: src/mount_davfs.c:473 src/mount_davfs.c:567 src/mount_davfs.c:593
#: src/mount_davfs.c:470 src/mount_davfs.c:564 src/mount_davfs.c:590
#, c-format
msgid "can't create directory %s"
msgstr "kann das Verzeichnis %s nicht erzeugen"

#: src/mount_davfs.c:477 src/mount_davfs.c:571 src/mount_davfs.c:597
#: src/mount_davfs.c:602 src/mount_davfs.c:610
#: src/mount_davfs.c:474 src/mount_davfs.c:568 src/mount_davfs.c:594
#: src/mount_davfs.c:599 src/mount_davfs.c:607
#, c-format
msgid "can't access directory %s"
msgstr "Zugriff auf das Verzeichnis %s verweigert"

#: src/mount_davfs.c:483 src/mount_davfs.c:577
#: src/mount_davfs.c:480 src/mount_davfs.c:574
#, c-format
msgid "can't change mode of directory %s"
msgstr "kann die Rechte des Verzeichnisses %s nicht ändern"

#: src/mount_davfs.c:488 src/mount_davfs.c:583
#: src/mount_davfs.c:485 src/mount_davfs.c:580
#, c-format
msgid "can't change group of directory %s"
msgstr "kann die Gruppenkennung des Verneichnisses %s nicht ändern"

#: src/mount_davfs.c:495 src/mount_davfs.c:551
#: src/mount_davfs.c:492 src/mount_davfs.c:548
#, c-format
msgid "file %s has wrong owner"
msgstr "die Datei %s hat den falschen Besitzer"

#: src/mount_davfs.c:499 src/mount_davfs.c:556
#: src/mount_davfs.c:496 src/mount_davfs.c:553
#, c-format
msgid "file %s has wrong permissions"
msgstr "die Dateirechte für %s sind falsch"

#: src/mount_davfs.c:628 src/mount_davfs.c:680
#: src/mount_davfs.c:625 src/mount_davfs.c:677
#, c-format
msgid "can't open file %s"
msgstr "kann die Datei %s nicht öffnen"

#: src/mount_davfs.c:633
#: src/mount_davfs.c:630
#, c-format
msgid "%s is already mounted on %s"
msgstr "%s ist bereits auf %s eingehängt"

#: src/mount_davfs.c:655
#: src/mount_davfs.c:652
#, c-format
msgid ""
"found PID file %s.\n"
@ -234,84 +234,84 @@ msgstr ""
"Möglicherweise wird %s von einem anderen Prozess benutzt,\n"
"oder ein anderer Mount-Prozess endete irregulär"

#: src/mount_davfs.c:697
#: src/mount_davfs.c:694
#, c-format
msgid "no entry for %s found in %s"
msgstr "für %s ist kein Eintrag in %s"

#: src/mount_davfs.c:701
#: src/mount_davfs.c:698
#, c-format
msgid "different URL in %s"
msgstr "in %s ist eine andere URL angegeben"

#: src/mount_davfs.c:704
#: src/mount_davfs.c:701
#, c-format
msgid "different file system type in %s"
msgstr "in %s ist ein anderer Dateisystemtyp angegeben"

#: src/mount_davfs.c:715
#: src/mount_davfs.c:712
#, c-format
msgid "different config file in %s"
msgstr "in %s ist eine andere Konfigurationsdatei angegeben"

#: src/mount_davfs.c:721
#: src/mount_davfs.c:718
#, c-format
msgid "different username in %s"
msgstr "in %s ist ein anderer Benutzername angegeben"

#: src/mount_davfs.c:725
#: src/mount_davfs.c:722
#, c-format
msgid "neither option `user' nor option `users' set in %s"
msgstr "in %s ist weder die Option „user” noch die Option „users” angegeben"

#: src/mount_davfs.c:728
#: src/mount_davfs.c:725
#, c-format
msgid "different mount options in %s"
msgstr "in %s sind andere Mount-Optionen angegeben"

#: src/mount_davfs.c:731
#: src/mount_davfs.c:728
#, c-format
msgid "different uid in %s"
msgstr "in %s ist eine andere uid angegeben"

#: src/mount_davfs.c:733
#: src/mount_davfs.c:730
#, c-format
msgid "different gid in %s"
msgstr "in %s ist eine andere gid angegeben"

#: src/mount_davfs.c:735
#: src/mount_davfs.c:732
#, c-format
msgid "different dir_mode in %s"
msgstr "in %s ist ein anderer dir_mode angegeben"

#: src/mount_davfs.c:737
#: src/mount_davfs.c:734
#, c-format
msgid "different file_mode in %s"
msgstr "in %s ist ein anderer file_mode angegeben"

#: src/mount_davfs.c:757
#: src/mount_davfs.c:754
#, c-format
msgid "you can't set file owner different from your uid"
msgstr ""
"du kannst als Besitzer des Dateisystems keine fremde Benutzerkennung angeben"

#: src/mount_davfs.c:769
#: src/mount_davfs.c:766
#, c-format
msgid "you must be member of the group of the file system"
msgstr ""
"du musst Mitglied in der Gruppe sein, zu der das Dateisystem gehören soll"

#: src/mount_davfs.c:780
#: src/mount_davfs.c:777
#, c-format
msgid "user %s must be member of group %s"
msgstr "der Benutzer %s muss Mitglied der Gruppe %s sein"

#: src/mount_davfs.c:800 src/mount_davfs.c:1139
#: src/mount_davfs.c:797 src/mount_davfs.c:1137
#, c-format
msgid "can't change effective user id"
msgstr "kann die effektive Benutzer-ID nicht ändern"

#: src/mount_davfs.c:844 src/umount_davfs.c:92
#: src/mount_davfs.c:841 src/umount_davfs.c:92
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
@ -322,67 +322,67 @@ msgstr ""
"gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE "
"ZWECKE.\n"

#: src/mount_davfs.c:860 src/umount_davfs.c:117
#: src/mount_davfs.c:857 src/umount_davfs.c:117
#, c-format
msgid "unknown error parsing arguments"
msgstr "Fehler beim Analysieren der Befehlsargumente"

#: src/mount_davfs.c:869 src/umount_davfs.c:123
#: src/mount_davfs.c:866 src/umount_davfs.c:123
#, c-format
msgid "missing argument"
msgstr "zu wenig Argumente"

#: src/mount_davfs.c:882
#: src/mount_davfs.c:879
#, c-format
msgid "can't evaluate path of mount point %s"
msgstr "kann den eindeutigen Pfad des Einhängepunktes %s nicht ermitteln"

#: src/mount_davfs.c:885 src/umount_davfs.c:125
#: src/mount_davfs.c:882 src/umount_davfs.c:125
#, c-format
msgid "too many arguments"
msgstr "zu viele Argumente"

#: src/mount_davfs.c:892
#: src/mount_davfs.c:889
#, c-format
msgid "A relative mount point must lie within your home directory"
msgstr "Ein relativer Einhängepunkt muss in deinem Home-Verzeichnis liegen"

#: src/mount_davfs.c:897
#: src/mount_davfs.c:894
#, c-format
msgid "no WebDAV-server specified"
msgstr "es wurde kein WebDAV-Server angegeben"

#: src/mount_davfs.c:900
#: src/mount_davfs.c:897
#, c-format
msgid "invalid URL"
msgstr "die URL ist ungültig"

#: src/mount_davfs.c:930
#: src/mount_davfs.c:927
#, c-format
msgid "user %s does not exist"
msgstr "der Benutzer %s existiert nicht"

#: src/mount_davfs.c:938
#: src/mount_davfs.c:935
#, c-format
msgid "group %s does not exist"
msgstr "die Gruppe %s existiert nicht"

#: src/mount_davfs.c:1004
#: src/mount_davfs.c:1002
#, c-format
msgid "program is not setuid root"
msgstr "die Programmdatei hat das setuid-Bit nicht gesetzt"

#: src/mount_davfs.c:1022
#: src/mount_davfs.c:1020
#, c-format
msgid "can't read group data base"
msgstr "kann die Gruppendatenbank nicht lesen"

#: src/mount_davfs.c:1049 src/mount_davfs.c:1062 src/mount_davfs.c:1064
#: src/mount_davfs.c:1082 src/mount_davfs.c:1084 src/mount_davfs.c:1099
#: src/mount_davfs.c:1047 src/mount_davfs.c:1060 src/mount_davfs.c:1062
#: src/mount_davfs.c:1080 src/mount_davfs.c:1082 src/mount_davfs.c:1097
msgid "Password: "
msgstr "Passwort:"

#: src/mount_davfs.c:1053
#: src/mount_davfs.c:1051
#, c-format
msgid ""
"Please enter the username to authenticate with proxy\n"
@ -391,11 +391,11 @@ msgstr ""
"Gib bitte den Benutzernamen für den Proxy %s an; wenn du keinen angeben "
"willst, drücke Return.\n"

#: src/mount_davfs.c:1055 src/mount_davfs.c:1075
#: src/mount_davfs.c:1053 src/mount_davfs.c:1073
msgid "Username:"
msgstr "Benutzername:"

#: src/mount_davfs.c:1059
#: src/mount_davfs.c:1057
#, c-format
msgid ""
"Please enter the password to authenticate user %s with proxy\n"
@ -404,7 +404,7 @@ msgstr ""
"Gib bitte das Passwort von %s für den Proxy %s\n"
"an; wenn du keines angeben willst, drücke Return.\n"

#: src/mount_davfs.c:1073
#: src/mount_davfs.c:1071
#, c-format
msgid ""
"Please enter the username to authenticate with server\n"
@ -413,7 +413,7 @@ msgstr ""
"Gib bitte den Benutzernamen für den Server %s an; wenn du keinen angeben "
"willst, drücke Return.\n"

#: src/mount_davfs.c:1079
#: src/mount_davfs.c:1077
#, c-format
msgid ""
"Please enter the password to authenticate user %s with server\n"
@ -422,7 +422,7 @@ msgstr ""
"Gib bitte das Passwort von %s für den Server %s\n"
"an; wenn du keines angeben willst, drücke Return.\n"

#: src/mount_davfs.c:1097
#: src/mount_davfs.c:1095
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
@ -431,17 +431,17 @@ msgstr ""
"Gib bitte das Passwort für die Entschlüsselung des\n"
"Client-Zertifikats %s ein.\n"

#: src/mount_davfs.c:1104
#: src/mount_davfs.c:1102
#, c-format
msgid "can't decrypt client certificate %s"
msgstr "kann das Zertifikat %s nicht entschlüsseln"

#: src/mount_davfs.c:1167
#: src/mount_davfs.c:1165
#, c-format
msgid "pid %i, got signal %i"
msgstr "PID %i, erhielt Signal %i"

#: src/mount_davfs.c:1206
#: src/mount_davfs.c:1204
#, c-format
msgid ""
"Warning: can't write entry into mtab, but will mount the file system anyway"
@ -449,72 +449,72 @@ msgstr ""
"Warnung: kann keinen Eintrag in die mtab schreiben, häne das Dateisystem "
"trotzdem ein."

#: src/mount_davfs.c:1232
#: src/mount_davfs.c:1230
#, c-format
msgid "option %s has invalid argument;it must be a decimal number"
msgstr "das Argument der Option %s ist ungültig; es muss eine Dezimalzahl sein"

#: src/mount_davfs.c:1235
#: src/mount_davfs.c:1233
#, c-format
msgid "option %s has invalid argument;it must be an octal number"
msgstr "das Argument der Option %s ist ungültig; es muss eine Oktalzahl sein"

#: src/mount_davfs.c:1238
#: src/mount_davfs.c:1236
#, c-format
msgid "option %s has invalid argument;it must be a number"
msgstr "das Argument der Option %s ist ungültig; es muss eine Zahl sein"

#: src/mount_davfs.c:1513
#: src/mount_davfs.c:1476
#, c-format
msgid "option %s requires argument"
msgstr "die Option %s verlangt ein Argument"

#: src/mount_davfs.c:1605
#: src/mount_davfs.c:1568
#, c-format
msgid "Unknown option %s.\n"
msgstr "unbekannte Option %s.\n"

#: src/mount_davfs.c:1976
#: src/mount_davfs.c:1937
#, c-format
msgid "can't read certificate %s"
msgstr "kann das Zertifikat %s nicht lesen"

#: src/mount_davfs.c:2008 src/mount_davfs.c:2021
#: src/mount_davfs.c:1969 src/mount_davfs.c:1982
#, c-format
msgid "can't read client certificate %s"
msgstr "kann das Client-Zertifikat %s nicht lesen"

#: src/mount_davfs.c:2012
#: src/mount_davfs.c:1973
#, c-format
msgid "client certificate file %s has wrong owner"
msgstr ""
"die Datei %s\n"
"des Client-Zertifikats hat den falschen Besitzer"

#: src/mount_davfs.c:2016
#: src/mount_davfs.c:1977
#, c-format
msgid "client certificate file %s has wrong permissions"
msgstr ""
"die Dateirechte für das Cient-Zertifikat\n"
"%s sind falsch"

#: src/mount_davfs.c:2038 src/mount_davfs.c:2266
#: src/mount_davfs.c:1999 src/mount_davfs.c:2227
#, c-format
msgid "opening %s failed"
msgstr "konnte %s nicht öffnen"

#: src/mount_davfs.c:2059 src/mount_davfs.c:2104 src/mount_davfs.c:2196
#: src/mount_davfs.c:2293 src/mount_davfs.c:2351 src/mount_davfs.c:2364
#: src/mount_davfs.c:2020 src/mount_davfs.c:2065 src/mount_davfs.c:2157
#: src/mount_davfs.c:2254 src/mount_davfs.c:2312 src/mount_davfs.c:2325
#, c-format
msgid "malformed line"
msgstr "Syntaxfehler in der Zeile"

#: src/mount_davfs.c:2174 src/mount_davfs.c:2190
#: src/mount_davfs.c:2135 src/mount_davfs.c:2151
#, c-format
msgid "unknown option"
msgstr "unbekannte Option"

#: src/mount_davfs.c:2496
#: src/mount_davfs.c:2457
#, c-format
msgid ""
"Usage:\n"
@ -527,7 +527,7 @@ msgstr ""
" %s -h, --help : diese Hilfe anzeigen\n"
"\n"

#: src/mount_davfs.c:2500
#: src/mount_davfs.c:2461
#, c-format
msgid ""
"To mount a WebDAV-resource don't call %s directly, but use\n"
@ -536,7 +536,7 @@ msgstr ""
"Um eine WebDAV-Resource zu einzuhängen, sollte %s nicht direkt\n"
"aufgerufen werden; stattdessen sollte „mount” benutzt werden.\n"

#: src/mount_davfs.c:2502
#: src/mount_davfs.c:2463
#, c-format
msgid ""
" mount <mountpoint> : or\n"
@ -547,7 +547,7 @@ msgstr ""
" mount <server-url> : hänge die WebDAV-Resource entsprechend den\n"
" Angaben in /etc/fstab ein.\n"

#: src/mount_davfs.c:2505
#: src/mount_davfs.c:2466
#, c-format
msgid ""
" mount -t davfs <server-url> <mountpoint> [-o options]\n"
@ -564,7 +564,7 @@ msgstr ""
" Kommas unterteilte Liste von Optionen.\n"
"\n"

#: src/mount_davfs.c:2510
#: src/mount_davfs.c:2471
#, c-format
msgid ""
"Recognised options:\n"
@ -581,7 +581,7 @@ msgstr ""
" file_mode= : Standard-Rechte für Dateien (oktal)\n"
" dir_mode= : Standard-Rechte für Verzeichnisse (oktal)\n"

#: src/mount_davfs.c:2516
#: src/mount_davfs.c:2477
#, c-format
msgid ""
" ro : mount read-only\n"
@ -684,96 +684,96 @@ msgid "an error occured while waiting; please wait for %s to terminate"
msgstr ""
"während des Wartens trat ein Fehler auf; bitte warte bis der %s-Prozess endet"

#: src/webdav.c:360
#: src/webdav.c:337
#, c-format
msgid "socket library initialization failed"
msgstr "die socket-Bibliothek konnte nicht initialisiert werden"

#: src/webdav.c:372
#: src/webdav.c:349
#, c-format
msgid "can't open stream to log neon-messages"
msgstr "kann die Ausgabe für neon-Log-Meldungen nicht öffnen"

#: src/webdav.c:413
#: src/webdav.c:380
#, c-format
msgid "neon library does not support TLS/SSL"
msgstr "die Neon-Bibliothek uterstützt TLS/SSL nicht"

#: src/webdav.c:475 src/webdav.c:478
#: src/webdav.c:440 src/webdav.c:443
#, c-format
msgid "mounting failed; the server does not support WebDAV"
msgstr "das Einhängen schlug fehl; der Server unterstützt WebDAV nicht"

#: src/webdav.c:486
#: src/webdav.c:451
#, c-format
msgid "warning: the server does not support locks"
msgstr "Warnung: der Server kann Dateien nicht sperren"

#: src/webdav.c:1566
#: src/webdav.c:1454
msgid "authentication failure:"
msgstr "Authentifizierungsfehler"

#: src/webdav.c:1604
#: src/webdav.c:1492
#, c-format
msgid "%i can't open cache file"
msgstr "%i kann die Cache-Datei nicht öffnen"

#: src/webdav.c:1612
#: src/webdav.c:1500
#, c-format
msgid "%i error writing to cache file"
msgstr "%i Fehler beim Schreiben der Cache-Datei"

#: src/webdav.c:1922 src/webdav.c:1951 src/webdav.c:1988
#: src/webdav.c:1741 src/webdav.c:1770 src/webdav.c:1807
#, c-format
msgid "the server certificate is not trusted"
msgstr "wir trauen dem Zertifikat nicht"

#: src/webdav.c:1931 src/webdav.c:1934
#: src/webdav.c:1750 src/webdav.c:1753
#, c-format
msgid "error processing server certificate"
msgstr "Fehler beim Analysieren des Server-Zertifikats"

#: src/webdav.c:1945 src/webdav.c:1979
#: src/webdav.c:1764 src/webdav.c:1798
#, c-format
msgid "the server certificate is not yet valid"
msgstr "das Server-Zertifikat ist noch nicht gültig"

#: src/webdav.c:1947 src/webdav.c:1982
#: src/webdav.c:1766 src/webdav.c:1801
#, c-format
msgid "the server certificate has expired"
msgstr "das Server-Zertifikat ist nicht mehr gültig"

#: src/webdav.c:1949 src/webdav.c:1985
#: src/webdav.c:1768 src/webdav.c:1804
#, c-format
msgid "the server certificate does not match the server name"
msgstr "das Server-Zertifikat passt nicht zum Namen des Servers"

#: src/webdav.c:1953 src/webdav.c:1991
#: src/webdav.c:1772 src/webdav.c:1810
#, c-format
msgid "unknown certificate error"
msgstr "Fehler beim Analysieren des Server-Zertifikats"

#: src/webdav.c:1954
#: src/webdav.c:1773
#, c-format
msgid " issuer: %s"
msgstr " Aussteller: %s"

#: src/webdav.c:1956
#: src/webdav.c:1775
#, c-format
msgid " subject: %s"
msgstr " Inhaber: %s"

#: src/webdav.c:1958
#: src/webdav.c:1777
#, c-format
msgid " identity: %s"
msgstr " Name: %s"

#: src/webdav.c:1960
#: src/webdav.c:1779
#, c-format
msgid " fingerprint: %s"
msgstr " Fingerabdruck: %s"

#: src/webdav.c:1962
#: src/webdav.c:1781
#, c-format
msgid ""
"You only should accept this certificate, if you can\n"
@ -784,28 +784,26 @@ msgstr ""
"dass der Fingerabdruck stimmt. Der Server könnte gefälscht sein oder\n"
"ein Angreifer könnte sich in die Verbindung zum Server eingeschaltet haben.\n"

#: src/webdav.c:1965
#: src/webdav.c:1784
#, c-format
msgid "Accept certificate for this session? [y,N] "
msgstr "Ich akzeptiere das Zertifikat für diese Sitzung [j,N]: "

#: src/webdav.c:1992
#: src/webdav.c:1811
#, c-format
msgid " issuer: %s"
msgstr " Aussteller des Zertifikats: %s"

#: src/webdav.c:1993
#: src/webdav.c:1812
#, c-format
msgid " subject: %s"
msgstr " Inhaber des Zertifikats: %s"

#: src/webdav.c:1994
#: src/webdav.c:1813
#, c-format
msgid " identity: %s"
msgstr " Name: %s"

#: src/webdav.c:1997
#: src/webdav.c:1816
msgid " accepted by user"
msgstr " durch den Benutzer akzeptiert"



View File

@ -1,13 +1,14 @@
/* This file is taken from FUSE 2.5.3.
From the two alternative licences the BSD licence has been chosen.
#include and #ifdef directives have been removed.
Modifications by Werner Baumann, 2009-04-14. */


/* This file defines the kernel interface of FUSE */

/*
Copyright (C) 2001-2006 Miklos Szeredi. All rights reserved.
This file defines the kernel interface of FUSE
Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu>

This program can be distributed under the terms of the GNU GPL.
See the file COPYING.

This -- and only this -- header file may also be distributed under
the terms of the BSD Licence as follows:

Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@ -31,26 +32,98 @@
SUCH DAMAGE.
*/

/*
* This file defines the kernel interface of FUSE
*
* Protocol changelog:
*
* 7.9:
* - new fuse_getattr_in input argument of GETATTR
* - add lk_flags in fuse_lk_in
* - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in
* - add blksize field to fuse_attr
* - add file flags field to fuse_read_in and fuse_write_in
*
* 7.10
* - add nonseekable open flag
*
* 7.11
* - add IOCTL message
* - add unsolicited notification support
* - add POLL message and NOTIFY_POLL notification
*
* 7.12
* - add umask flag to input argument of open, mknod and mkdir
* - add notification messages for invalidation of inodes and
* directory entries
*
* 7.13
* - make max number of background requests and congestion threshold
* tunables
*
* 7.14
* - add splice support to fuse device
*
* 7.15
* - add store notify
* - add retrieve notify
*
* 7.16
* - add BATCH_FORGET request
* - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct
* fuse_ioctl_iovec' instead of ambiguous 'struct iovec'
* - add FUSE_IOCTL_32BIT flag
*
* 7.17
* - add FUSE_FLOCK_LOCKS and FUSE_RELEASE_FLOCK_UNLOCK
*
* 7.18
* - add FUSE_IOCTL_DIR flag
* - add FUSE_NOTIFY_DELETE
*
* 7.19
* - add FUSE_FALLOCATE
*/

#ifndef _LINUX_FUSE_H
#define _LINUX_FUSE_H

#include <sys/types.h>
#define __u64 uint64_t
#define __s64 int64_t
#define __u32 uint32_t
#define __s32 int32_t
#define __u16 uint16_t

/*
* Version negotiation:
*
* Both the kernel and userspace send the version they support in the
* INIT request and reply respectively.
*
* If the major versions match then both shall use the smallest
* of the two minor versions for communication.
*
* If the kernel supports a larger major version, then userspace shall
* reply with the major version it supports, ignore the rest of the
* INIT message and expect a new INIT message from the kernel with a
* matching major version.
*
* If the library supports a larger major version, then it shall fall
* back to the major protocol version sent by the kernel for
* communication and reply with that major version (and an arbitrary
* supported minor version).
*/

/** Version number of this interface */
#define FUSE_KERNEL_VERSION 7

/** Minor version number of this interface */
#define FUSE_KERNEL_MINOR_VERSION 5
#define FUSE_KERNEL_MINOR_VERSION 19

/** The node ID of the root inode */
#define FUSE_ROOT_ID 1

/** The major number of the fuse character device */
#define FUSE_MAJOR 10

/** The minor number of the fuse character device */
#define FUSE_MINOR 229

/* Make sure all structures are padded to 64bit boundary, so 32bit
userspace works under 64bit kernels */

@ -69,6 +142,8 @@ struct fuse_attr {
__u32 uid;
__u32 gid;
__u32 rdev;
__u32 blksize;
__u32 padding;
};

struct fuse_kstatfs {
@ -84,6 +159,16 @@ struct fuse_kstatfs {
__u32 spare[6];
};

struct fuse_file_lock {
__u64 start;
__u64 end;
__u32 type;
__u32 pid; /* tgid */
};

/**
* Bitmasks for fuse_setattr_in.valid
*/
#define FATTR_MODE (1 << 0)
#define FATTR_UID (1 << 1)
#define FATTR_GID (1 << 2)
@ -91,15 +176,100 @@ struct fuse_kstatfs {
#define FATTR_ATIME (1 << 4)
#define FATTR_MTIME (1 << 5)
#define FATTR_FH (1 << 6)
#define FATTR_ATIME_NOW (1 << 7)
#define FATTR_MTIME_NOW (1 << 8)
#define FATTR_LOCKOWNER (1 << 9)

/**
* Flags returned by the OPEN request
*
* FOPEN_DIRECT_IO: bypass page cache for this open file
* FOPEN_KEEP_CACHE: don't invalidate the data cache on open
* FOPEN_NONSEEKABLE: the file is not seekable
*/
#define FOPEN_DIRECT_IO (1 << 0)
#define FOPEN_KEEP_CACHE (1 << 1)
#define FOPEN_NONSEEKABLE (1 << 2)

/**
* INIT request/reply flags
*
* FUSE_POSIX_LOCKS: remote locking for POSIX file locks
* FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
* FUSE_DONT_MASK: don't apply umask to file mode on create operations
* FUSE_FLOCK_LOCKS: remote locking for BSD style file locks
*/
#define FUSE_ASYNC_READ (1 << 0)
#define FUSE_POSIX_LOCKS (1 << 1)
#define FUSE_FILE_OPS (1 << 2)
#define FUSE_ATOMIC_O_TRUNC (1 << 3)
#define FUSE_EXPORT_SUPPORT (1 << 4)
#define FUSE_BIG_WRITES (1 << 5)
#define FUSE_DONT_MASK (1 << 6)
#define FUSE_FLOCK_LOCKS (1 << 10)

/**
* CUSE INIT request/reply flags
*
* CUSE_UNRESTRICTED_IOCTL: use unrestricted ioctl
*/
#define CUSE_UNRESTRICTED_IOCTL (1 << 0)

/**
* Release flags
*/
#define FUSE_RELEASE_FLUSH (1 << 0)
#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)

/**
* Getattr flags
*/
#define FUSE_GETATTR_FH (1 << 0)

/**
* Lock flags
*/
#define FUSE_LK_FLOCK (1 << 0)

/**
* WRITE flags
*
* FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed
* FUSE_WRITE_LOCKOWNER: lock_owner field is valid
*/
#define FUSE_WRITE_CACHE (1 << 0)
#define FUSE_WRITE_LOCKOWNER (1 << 1)

/**
* Read flags
*/
#define FUSE_READ_LOCKOWNER (1 << 1)

/**
* Ioctl flags
*
* FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine
* FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed
* FUSE_IOCTL_RETRY: retry with new iovecs
* FUSE_IOCTL_32BIT: 32bit ioctl
* FUSE_IOCTL_DIR: is a directory
*
* FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs
*/
#define FUSE_IOCTL_COMPAT (1 << 0)
#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
#define FUSE_IOCTL_RETRY (1 << 2)
#define FUSE_IOCTL_32BIT (1 << 3)
#define FUSE_IOCTL_DIR (1 << 4)

#define FUSE_IOCTL_MAX_IOV 256

/**
* Poll flags
*
* FUSE_POLL_SCHEDULE_NOTIFY: request poll notify
*/
#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)

enum fuse_opcode {
FUSE_LOOKUP = 1,
@ -130,13 +300,38 @@ enum fuse_opcode {
FUSE_READDIR = 28,
FUSE_RELEASEDIR = 29,
FUSE_FSYNCDIR = 30,
FUSE_GETLK = 31,
FUSE_SETLK = 32,
FUSE_SETLKW = 33,
FUSE_ACCESS = 34,
FUSE_CREATE = 35
FUSE_CREATE = 35,
FUSE_INTERRUPT = 36,
FUSE_BMAP = 37,
FUSE_DESTROY = 38,
FUSE_IOCTL = 39,
FUSE_POLL = 40,
FUSE_NOTIFY_REPLY = 41,
FUSE_BATCH_FORGET = 42,
FUSE_FALLOCATE = 43,

/* CUSE specific operations */
CUSE_INIT = 4096,
};

enum fuse_notify_code {
FUSE_NOTIFY_POLL = 1,
FUSE_NOTIFY_INVAL_INODE = 2,
FUSE_NOTIFY_INVAL_ENTRY = 3,
FUSE_NOTIFY_STORE = 4,
FUSE_NOTIFY_RETRIEVE = 5,
FUSE_NOTIFY_DELETE = 6,
FUSE_NOTIFY_CODE_MAX,
};

/* The read buffer is required to be at least 8k, but may be much larger */
/* 2009-04-14, increased size of FUSE_MIN_READ_BUFFER, Werner Baumann */
#define FUSE_MIN_READ_BUFFER 16384
#define FUSE_MIN_READ_BUFFER 8192

#define FUSE_COMPAT_ENTRY_OUT_SIZE 120

struct fuse_entry_out {
__u64 nodeid; /* Inode ID */
@ -153,6 +348,24 @@ struct fuse_forget_in {
__u64 nlookup;
};

struct fuse_forget_one {
__u64 nodeid;
__u64 nlookup;
};

struct fuse_batch_forget_in {
__u32 count;
__u32 dummy;
};

struct fuse_getattr_in {
__u32 getattr_flags;
__u32 dummy;
__u64 fh;
};

#define FUSE_COMPAT_ATTR_OUT_SIZE 96

struct fuse_attr_out {
__u64 attr_valid; /* Cache timeout for the attributes */
__u32 attr_valid_nsec;
@ -160,14 +373,18 @@ struct fuse_attr_out {
struct fuse_attr attr;
};

#define FUSE_COMPAT_MKNOD_IN_SIZE 8

struct fuse_mknod_in {
__u32 mode;
__u32 rdev;
__u32 umask;
__u32 padding;
};

struct fuse_mkdir_in {
__u32 mode;
__u32 padding;
__u32 umask;
};

struct fuse_rename_in {
@ -183,7 +400,7 @@ struct fuse_setattr_in {
__u32 padding;
__u64 fh;
__u64 size;
__u64 unused1;
__u64 lock_owner;
__u64 atime;
__u64 mtime;
__u64 unused2;
@ -198,8 +415,15 @@ struct fuse_setattr_in {
};

struct fuse_open_in {
__u32 flags;
__u32 unused;
};

struct fuse_create_in {
__u32 flags;
__u32 mode;
__u32 umask;
__u32 padding;
};

struct fuse_open_out {
@ -211,27 +435,37 @@ struct fuse_open_out {
struct fuse_release_in {
__u64 fh;
__u32 flags;
__u32 padding;
__u32 release_flags;
__u64 lock_owner;
};

struct fuse_flush_in {
__u64 fh;
__u32 flush_flags;
__u32 unused;
__u32 padding;
__u64 lock_owner;
};

struct fuse_read_in {
__u64 fh;
__u64 offset;
__u32 size;
__u32 read_flags;
__u64 lock_owner;
__u32 flags;
__u32 padding;
};

#define FUSE_COMPAT_WRITE_IN_SIZE 24

struct fuse_write_in {
__u64 fh;
__u64 offset;
__u32 size;
__u32 write_flags;
__u64 lock_owner;
__u32 flags;
__u32 padding;
};

struct fuse_write_out {
@ -266,6 +500,18 @@ struct fuse_getxattr_out {
__u32 padding;
};

struct fuse_lk_in {
__u64 fh;
__u64 owner;
struct fuse_file_lock lk;
__u32 lk_flags;
__u32 padding;
};

struct fuse_lk_out {
struct fuse_file_lock lk;
};

struct fuse_access_in {
__u32 mask;
__u32 padding;
@ -274,15 +520,100 @@ struct fuse_access_in {
struct fuse_init_in {
__u32 major;
__u32 minor;
__u32 max_readahead;
__u32 flags;
};

struct fuse_init_out {
__u32 major;
__u32 minor;
__u32 unused[3];
__u32 max_readahead;
__u32 flags;
__u16 max_background;
__u16 congestion_threshold;
__u32 max_write;
};

#define CUSE_INIT_INFO_MAX 4096

struct cuse_init_in {
__u32 major;
__u32 minor;
__u32 unused;
__u32 flags;
};

struct cuse_init_out {
__u32 major;
__u32 minor;
__u32 unused;
__u32 flags;
__u32 max_read;
__u32 max_write;
__u32 dev_major; /* chardev major */
__u32 dev_minor; /* chardev minor */
__u32 spare[10];
};

struct fuse_interrupt_in {
__u64 unique;
};

struct fuse_bmap_in {
__u64 block;
__u32 blocksize;
__u32 padding;
};

struct fuse_bmap_out {
__u64 block;
};

struct fuse_ioctl_in {
__u64 fh;
__u32 flags;
__u32 cmd;
__u64 arg;
__u32 in_size;
__u32 out_size;
};

struct fuse_ioctl_iovec {
__u64 base;
__u64 len;
};

struct fuse_ioctl_out {
__s32 result;
__u32 flags;
__u32 in_iovs;
__u32 out_iovs;
};

struct fuse_poll_in {
__u64 fh;
__u64 kh;
__u32 flags;
__u32 padding;
};

struct fuse_poll_out {
__u32 revents;
__u32 padding;
};

struct fuse_notify_poll_wakeup_out {
__u64 kh;
};

struct fuse_fallocate_in {
__u64 fh;
__u64 offset;
__u64 length;
__u32 mode;
__u32 padding;
};

struct fuse_in_header {
__u32 len;
__u32 opcode;
@ -305,10 +636,56 @@ struct fuse_dirent {
__u64 off;
__u32 namelen;
__u32 type;
char name[0];
char name[];
};

#define FUSE_NAME_OFFSET ((unsigned) ((struct fuse_dirent *) 0)->name)
#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
#define FUSE_DIRENT_SIZE(d) \
FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)

struct fuse_notify_inval_inode_out {
__u64 ino;
__s64 off;
__s64 len;
};

struct fuse_notify_inval_entry_out {
__u64 parent;
__u32 namelen;
__u32 padding;
};

struct fuse_notify_delete_out {
__u64 parent;
__u64 child;
__u32 namelen;
__u32 padding;
};

struct fuse_notify_store_out {
__u64 nodeid;
__u64 offset;
__u32 size;
__u32 padding;
};

struct fuse_notify_retrieve_out {
__u64 notify_unique;
__u64 nodeid;
__u64 offset;
__u32 size;
__u32 padding;
};

/* Matches the size of fuse_write_in */
struct fuse_notify_retrieve_in {
__u64 dummy1;
__u64 offset;
__u32 size;
__u32 dummy2;
__u64 dummy3;
__u64 dummy4;
};

#endif /* _LINUX_FUSE_H */

View File

@ -55,6 +55,9 @@
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif

#include "xalloc.h"
#include "xvasprintf.h"
@ -74,6 +77,17 @@
#endif


/* Constants from Linux headers */
/*==============================*/

#ifndef MISC_MAJOR
#define MISC_MAJOR 10
#endif
#ifndef FUSE_MINOR
#define FUSE_MINOR 229
#endif


/* Data Types */
/*============*/

@ -92,6 +106,9 @@ struct create_out {
kernel file system. */
#define FUSE_DEV_NAME "fuse"

/* Minimum minor version of fuse. */
#define FUSE_MIN_MINOR 13


/* Private global variables */
/*==========================*/
@ -102,6 +119,14 @@ static int fuse_device;
/* Buffer used for communication with the kernel module (in and out). */
static size_t buf_size;
static char *buf;
/* Header of incomming calls. */
static struct fuse_in_header *ih;
/* Header of outgoing replies. */
static struct fuse_out_header *oh;
/* Start of upcall specific structure. */
static char *upcall;
/* Start of upcall specific reply structure. */
static char *reply;

/* Time to wait for upcalls before calling dav_tidy_cache(). */
static time_t idle_time;
@ -161,6 +186,10 @@ fuse_stat(void);
static uint32_t
fuse_write(void);

static uint32_t
not_implemented(const char *msg);


/* Auxiliary functions. */

static off_t
@ -183,12 +212,17 @@ dav_init_kernel_interface(const char *url, const char *mpoint,
"Initializing kernel interface");

buf_size = args->buf_size * 1024;
if (buf_size < (FUSE_MIN_READ_BUFFER + 4096))
buf_size = FUSE_MIN_READ_BUFFER + 4096;
if (buf_size < (FUSE_MIN_READ_BUFFER + 1024))
buf_size = FUSE_MIN_READ_BUFFER + 1024;
buf = malloc(buf_size);
if (!buf)
error(EXIT_FAILURE, errno, _("can't allocate message buffer"));

ih = (struct fuse_in_header *) buf;
oh = (struct fuse_out_header *) buf;
upcall = buf + sizeof(struct fuse_in_header);
reply = buf + sizeof(struct fuse_out_header);

idle_time = args->delay_upload;

char *path = xasprintf("%s/%s", DAV_DEV_DIR, FUSE_DEV_NAME);
@ -198,7 +232,7 @@ dav_init_kernel_interface(const char *url, const char *mpoint,
fuse_device = open(path, O_RDWR | O_NONBLOCK);
}
if (fuse_device <= 0) {
if (mknod(path, S_IFCHR, makedev(FUSE_MAJOR, FUSE_MINOR)) == 0) {
if (mknod(path, S_IFCHR, makedev(MISC_MAJOR, FUSE_MINOR)) == 0) {
if (chown(path, 0, 0) == 0 && chmod(path, S_IRUSR | S_IWUSR) == 0) {
fuse_device = open(path, O_RDWR | O_NONBLOCK);
} else {
@ -214,7 +248,7 @@ dav_init_kernel_interface(const char *url, const char *mpoint,
char *mdata = xasprintf("fd=%i,rootmode=%o,user_id=%i,group_id=%i,"
"allow_other,max_read=%lu", fuse_device,
args->dir_mode, args->fsuid, args->fsgid,
(unsigned long int) (buf_size - 4096));
(unsigned long int) (buf_size - 1024));

if (mount(url, mpoint, "fuse", args->mopts, mdata) != 0)
error(EXIT_FAILURE, errno, _("mounting failed"));
@ -273,8 +307,6 @@ dav_run_msgloop(volatile int *keep_on_running)
break;
}

struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
if (ih->nodeid == 1)
ih->nodeid = root;

@ -286,7 +318,6 @@ dav_run_msgloop(volatile int *keep_on_running)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_FORGET: no reply");
oh->error = 0;
oh->len = 0;
break;
case FUSE_GETATTR:
@ -296,16 +327,10 @@ dav_run_msgloop(volatile int *keep_on_running)
oh->len = fuse_setattr();
break;
case FUSE_READLINK:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_READLINK:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_READLINK:");
break;
case FUSE_SYMLINK:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_SYMLINK:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_SYMLINK:");
break;
case FUSE_MKNOD:
oh->len = fuse_mknod();
@ -315,28 +340,30 @@ dav_run_msgloop(volatile int *keep_on_running)
break;
case FUSE_UNLINK:
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_UNLINK:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p 0x%llx, %s",
(unsigned long long) ih->nodeid,
(char *) (buf + sizeof(struct fuse_in_header)));
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_UNLINK %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
}
oh->error = dav_remove((dav_node *) ((size_t) ih->nodeid),
(char *) (buf + sizeof(struct fuse_in_header)),
ih->uid);
oh->error = dav_remove((dav_node *) ((size_t) ih->nodeid), upcall,
ih->uid);
if (oh->error)
oh->error *= -1;
oh->len = sizeof(struct fuse_out_header);
break;
case FUSE_RMDIR:
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_RMDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p 0x%llx, %s",
(unsigned long long) ih->nodeid,
(char *) (buf + sizeof(struct fuse_in_header)));
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_RMDIR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
}
oh->error = dav_rmdir((dav_node *) ((size_t) ih->nodeid),
(char *) (buf + sizeof(struct fuse_in_header)),
ih->uid);
oh->error = dav_rmdir((dav_node *) ((size_t) ih->nodeid), upcall,
ih->uid);
if (oh->error)
oh->error *= -1;
oh->len = sizeof(struct fuse_out_header);
@ -345,10 +372,7 @@ dav_run_msgloop(volatile int *keep_on_running)
oh->len = fuse_rename();
break;
case FUSE_LINK:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_LINK:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_LINK:");
break;
case FUSE_OPEN:
oh->len = fuse_open();
@ -368,9 +392,12 @@ dav_run_msgloop(volatile int *keep_on_running)
break;
case FUSE_FSYNC:
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_FSYNC:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx",
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_FSYNC %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
}
oh->error = dav_sync((dav_node *) ((size_t) ih->nodeid));
if (oh->error)
@ -378,28 +405,16 @@ dav_run_msgloop(volatile int *keep_on_running)
oh->len = sizeof(struct fuse_out_header);
break;
case FUSE_SETXATTR:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_SETXATTR:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_SETXATTR:");
break;
case FUSE_GETXATTR:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_GETXATTR:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_GETXATTR:");
break;
case FUSE_LISTXATTR:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_LISTXATTR:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_LISTXATTR:");
break;
case FUSE_REMOVEXATTR:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_REMOVEXATTR:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_REMOVEXATTR:");
break;
case FUSE_FLUSH:
if (debug)
@ -421,10 +436,16 @@ dav_run_msgloop(volatile int *keep_on_running)
oh->len = fuse_release();
break;
case FUSE_FSYNCDIR:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_FSYNCDIR:");
oh->error = -ENOSYS;
oh->len = sizeof(struct fuse_out_header);
oh->len = not_implemented("FUSE_FSYNCDIR:");
break;
case FUSE_GETLK:
oh->len = not_implemented("FUSE_GETLK:");
break;
case FUSE_SETLK:
oh->len = not_implemented("FUSE_SETLK:");
break;
case FUSE_SETLKW:
oh->len = not_implemented("FUSE_SETLKW:");
break;
case FUSE_ACCESS:
oh->len = fuse_access();
@ -432,6 +453,30 @@ dav_run_msgloop(volatile int *keep_on_running)
case FUSE_CREATE:
oh->len = fuse_create();
break;
case FUSE_INTERRUPT:
oh->len = not_implemented("FUSE_INTERRUPT:");
break;
case FUSE_BMAP:
oh->len = not_implemented("FUSE_BMAP:");
break;
case FUSE_DESTROY:
oh->len = not_implemented("FUSE_DESTROY:");
break;
case FUSE_IOCTL:
oh->len = not_implemented("FUSE_IOCTL:");
break;
case FUSE_POLL:
oh->len = not_implemented("FUSE_POLL:");
break;
case FUSE_NOTIFY_REPLY:
oh->len = not_implemented("FUSE_NOTIFY_REPLY:");
break;
case FUSE_BATCH_FORGET:
oh->len = not_implemented("FUSE_BATCH_FORGET:");
break;
case FUSE_FALLOCATE:
oh->len = not_implemented("FUSE_FALLOCATE:");
break;
default:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
@ -478,15 +523,16 @@ dav_run_msgloop(volatile int *keep_on_running)
static uint32_t
fuse_access(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_access_in *in = (struct fuse_access_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_access_in *in = (struct fuse_access_in *) upcall;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_ACCESS:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, f 0%o",
(unsigned long long) ih->nodeid, in->mask);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " uid %i", ih->uid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_ACCESS %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " m=0x%x",
in->mask);
}

oh->error = dav_access((dav_node *) ((size_t) ih->nodeid), ih->uid,
@ -502,18 +548,18 @@ fuse_access(void)
static uint32_t
fuse_create(void)
{
struct fuse_in_header *ih= (struct fuse_in_header *) buf;
struct fuse_open_in *in = (struct fuse_open_in *)
(buf + sizeof(struct fuse_in_header));
char *name = buf + sizeof(struct fuse_in_header)
+ sizeof(struct fuse_open_in);
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct create_out *out = (struct create_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_create_in *in = (struct fuse_create_in *) upcall;
char *name = upcall + sizeof(struct fuse_create_in);
struct create_out *out = (struct create_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_CREATE:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, f 0%o",
(unsigned long long) ih->nodeid, in->flags);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_CREATE %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " f=0x%x m=0%o um=0%o",
in->flags, in->mode, in->umask);
}

int created = 0;
@ -570,6 +616,7 @@ fuse_create(void)

if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " fd %i", fd);

return sizeof(struct fuse_out_header) + sizeof(struct create_out);
}

@ -577,14 +624,17 @@ fuse_create(void)
static uint32_t
fuse_getattr(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_attr_out *out = (struct fuse_attr_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_getattr_in *in = (struct fuse_getattr_in *) upcall;
struct fuse_attr_out *out = (struct fuse_attr_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_GETATTR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx",
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_GETATTR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " f=0x%x fh=%llu",
in->getattr_flags, in->fh);
}

oh->error = dav_getattr((dav_node *) ((size_t) ih->nodeid), ih->uid);
@ -606,16 +656,33 @@ fuse_getattr(void)
static uint32_t
fuse_init(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_init_in *in = (struct fuse_init_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_init_out *out = (struct fuse_init_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_init_in *in = (struct fuse_init_in *) upcall;
struct fuse_init_out *out = (struct fuse_init_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_INIT:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " version %i.%i",
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_INIT %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " verson=%u.%u",
in->major, in->minor);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " ra=%u f=0x%x",
in->max_readahead, in->flags);
}

if (in->major < FUSE_KERNEL_VERSION
|| (in->major == FUSE_KERNEL_VERSION && in->minor < FUSE_MIN_MINOR)) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FATAL: Kernel-version too old.");
oh->error = -ENOSYS;
return sizeof(struct fuse_out_header);
}

if (in->major > FUSE_KERNEL_VERSION) {
oh->error = 0;
out->major = FUSE_KERNEL_VERSION;
return sizeof(struct fuse_out_header);
}

dav_node *node;
@ -630,12 +697,16 @@ fuse_init(void)

root = (size_t) node;
out->major = FUSE_KERNEL_VERSION;
out->minor = FUSE_KERNEL_MINOR_VERSION;
out->unused[0] = 0;
out->unused[1] = 0;
out->unused[2] = 0;
out->max_write = buf_size - sizeof(struct fuse_in_header)
- sizeof(struct fuse_write_in) - 4095;
if (in->minor > FUSE_KERNEL_MINOR_VERSION) {
out->minor = FUSE_KERNEL_MINOR_VERSION;
} else {
out->minor = in->minor;
}
out->max_readahead = 0;
out->flags = 0;
out->max_background = 0;
out->congestion_threshold = 0;
out->max_write = buf_size - 1024;

return sizeof(struct fuse_out_header) + sizeof(struct fuse_init_out);
}
@ -644,15 +715,16 @@ fuse_init(void)
static uint32_t
fuse_lookup(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
char * name = (char *) (buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_entry_out *out = (struct fuse_entry_out *)
(buf + sizeof(struct fuse_out_header));
char * name = upcall;
struct fuse_entry_out *out = (struct fuse_entry_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_LOOKUP:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p 0x%llx, %s",
(unsigned long long) ih->nodeid, name);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_LOOKUP %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " %s", name);
}

dav_node *node = NULL;
@ -666,7 +738,7 @@ fuse_lookup(void)
return sizeof(struct fuse_out_header);
}

out->nodeid = (size_t) node;
out->nodeid = (uint64_t) ((size_t) node);
out->generation = out->nodeid;
out->entry_valid = 1;
out->attr_valid = 1;
@ -681,18 +753,18 @@ fuse_lookup(void)
static uint32_t
fuse_mkdir(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_mkdir_in *in = (struct fuse_mkdir_in *)
(buf + sizeof(struct fuse_in_header));
char *name = (char *) (buf + sizeof(struct fuse_in_header)
+ sizeof(struct fuse_mkdir_in));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_entry_out *out = (struct fuse_entry_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_mkdir_in *in = (struct fuse_mkdir_in *) upcall;
char *name = upcall + sizeof(struct fuse_mkdir_in);
struct fuse_entry_out *out = (struct fuse_entry_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_MKDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p 0x%llx, %s",
(unsigned long long) ih->nodeid, name);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_MKDIR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " m=0%o um=0%o %s",
in->mode, in->umask, name);
}

dav_node *node = NULL;
@ -721,18 +793,18 @@ fuse_mkdir(void)
static uint32_t
fuse_mknod(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_mknod_in *in = (struct fuse_mknod_in *)
(buf + sizeof(struct fuse_in_header));
char *name = (char *) (buf + sizeof(struct fuse_in_header)
+ sizeof(struct fuse_mknod_in));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_entry_out *out = (struct fuse_entry_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_mknod_in *in = (struct fuse_mknod_in *) upcall;
char *name = upcall + sizeof(struct fuse_mknod_in);
struct fuse_entry_out *out = (struct fuse_entry_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_MKNOD:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p 0x%llx, m 0%o",
(unsigned long long) ih->nodeid, in->mode);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_MKNOD %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " m=0%o r=%u um=0%o",
in->mode, in->rdev, in->umask);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " %s", name);
}

@ -767,20 +839,24 @@ fuse_mknod(void)
static uint32_t
fuse_open(void)
{
struct fuse_in_header *ih= (struct fuse_in_header *) buf;
struct fuse_open_in *in = (struct fuse_open_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_open_out *out = (struct fuse_open_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_open_in *in = (struct fuse_open_in *) upcall;
struct fuse_open_out *out = (struct fuse_open_out *) reply;

if (debug) {
if (ih->opcode == FUSE_OPENDIR) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_OPENDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_OPENDIR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
} else {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_OPEN:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_OPEN %llu: n=0x%llx",
(unsigned long long) ih-> unique,
(unsigned long long) ih->nodeid);
}
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, f 0%o",
(unsigned long long) ih->nodeid, in->flags);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " f=0x%x", in->flags);
}

int fd = 0;
@ -800,6 +876,7 @@ fuse_open(void)

if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " fd %i", fd);

return sizeof(struct fuse_out_header) + sizeof(struct fuse_open_out);
}

@ -807,21 +884,27 @@ fuse_open(void)
static uint32_t
fuse_read(void)
{
struct fuse_in_header *ih= (struct fuse_in_header *) buf;
struct fuse_read_in *in = (struct fuse_read_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_read_in *in = (struct fuse_read_in *) upcall;

if (debug) {
if (ih->opcode == FUSE_READDIR) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_READDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_READDIR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
} else {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_READ:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_READ %llu: n=0x%llx",
(unsigned long long) ih-> unique,
(unsigned long long) ih->nodeid);
}
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, fd %llu",
(unsigned long long) ih->nodeid, (unsigned long long) in->fh);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " pid %i", ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " size %u, off %llu",
in->size, (unsigned long long) in->offset);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " fh=%llu, off=%llu, sz=%u",
(unsigned long long) in->fh, (unsigned long long) in->offset,
in->size);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " rf=0x%x, f=0x%x",
in->read_flags, in->flags);
}

if (in->size > (buf_size - sizeof(struct fuse_out_header))) {
@ -831,8 +914,7 @@ fuse_read(void)

ssize_t len;
oh->error = dav_read(&len, (dav_node *) ((size_t) ih->nodeid),
in->fh, buf + sizeof(struct fuse_out_header),
in->size, in->offset);
in->fh, reply, in->size, in->offset);

if (oh->error)
oh->error *= -1;
@ -844,20 +926,24 @@ fuse_read(void)
static uint32_t
fuse_release(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_release_in *in = (struct fuse_release_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_release_in *in = (struct fuse_release_in *) upcall;

if (debug) {
if (ih->opcode == FUSE_RELEASEDIR) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_RELEASEDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_RELEASEDIR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
} else {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_RELEASE:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"FUSE_RELEASE %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
}
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, f 0%o",
(unsigned long long) ih->nodeid, in->flags);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " pid %i, fd %llu",
ih->pid, (unsigned long long) in->fh);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " fh=%llu, f=0x%x, rf=0x%x",
(unsigned long long) in->fh, in->flags, in->release_flags);
}

oh->error = dav_close((dav_node *) ((size_t) ih->nodeid), in->fh,
@ -873,18 +959,18 @@ fuse_release(void)
static uint32_t
fuse_rename(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_rename_in *in = (struct fuse_rename_in *)
(buf + sizeof(struct fuse_in_header));
char *old = (char *) (buf + sizeof(struct fuse_in_header)
+ sizeof(struct fuse_rename_in));
struct fuse_rename_in *in = (struct fuse_rename_in *) upcall;
char *old = upcall + sizeof(struct fuse_rename_in);
char *new = old + strlen(old) + 1;
struct fuse_out_header *oh = (struct fuse_out_header *) buf;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_RENAME:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " sp 0x%llx, %s",
(unsigned long long) ih->nodeid, old);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " dp 0x%llx, %s",
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_RENAME %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " %s", old);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n=0x%llx %s",
(unsigned long long) in->newdir, new);
}

@ -903,22 +989,21 @@ fuse_rename(void)
static uint32_t
fuse_setattr(void)
{
struct fuse_in_header *ih = (struct fuse_in_header *) buf;
struct fuse_setattr_in *in = (struct fuse_setattr_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_attr_out *out = (struct fuse_attr_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_setattr_in *in = (struct fuse_setattr_in *) upcall;
struct fuse_attr_out *out = (struct fuse_attr_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_SETATTR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, m 0%o",
(unsigned long long) ih->nodeid, in->mode);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " uid %i, gid %i",
in->uid, in->gid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " sz %llu, at %llu,",
(unsigned long long) in->size, (unsigned long long) in->atime);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " mt %llu",
(unsigned long long) in->mtime);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_SETATTR %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " v=0x%x sz=%llu",
in->valid, (unsigned long long) in->size);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " at=%llu mt=%llu",
(unsigned long long) in->atime, (unsigned long long) in->mtime);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " m=0%o uid=%u gid=%u",
in->mode, in->uid, in->gid);
}

oh->error = dav_setattr((dav_node *) ((size_t) ih->nodeid), ih->uid,
@ -946,11 +1031,15 @@ fuse_setattr(void)
static uint32_t
fuse_stat(void)
{
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_statfs_out *out = (struct fuse_statfs_out *)
(buf + sizeof(struct fuse_out_header));
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_STATFS:");
struct fuse_statfs_out *out = (struct fuse_statfs_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_STATFS %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
}

dav_stat *st = dav_statfs();
if (!st) {
@ -988,20 +1077,20 @@ fuse_stat(void)
static uint32_t
fuse_write(void)
{
struct fuse_in_header *ih= (struct fuse_in_header *) buf;
struct fuse_write_in *in = (struct fuse_write_in *)
(buf + sizeof(struct fuse_in_header));
struct fuse_out_header *oh = (struct fuse_out_header *) buf;
struct fuse_write_out *out = (struct fuse_write_out *)
(buf + sizeof(struct fuse_out_header));
struct fuse_write_in *in = (struct fuse_write_in *) upcall;
struct fuse_write_out *out = (struct fuse_write_out *) reply;

if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_WRITE:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n 0x%llx, fd %llu",
(unsigned long long) ih->nodeid, (unsigned long long) in->fh);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " pid %i, flags 0%o",
ih->pid, in->write_flags);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " size %u, off %llu",
in->size, (unsigned long long) in->offset);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "FUSE_WRITE %llu: n=0x%llx",
(unsigned long long) ih->unique,
(unsigned long long) ih->nodeid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " u=%u g=%u p=%u",
ih->uid, ih->gid, ih->pid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " fh=%llu, off=%llu, sz=%u",
(unsigned long long) in->fh, (unsigned long long) in->offset,
in->size);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " wf=0x%x, f=0x%x",
in->write_flags, in->flags);
}

if (in->size > (buf_size - sizeof(struct fuse_in_header)
@ -1012,8 +1101,7 @@ fuse_write(void)

size_t size;
oh->error = dav_write(&size, (dav_node *) ((size_t) ih->nodeid),
in->fh, buf + sizeof(struct fuse_in_header)
+ sizeof(struct fuse_write_in),
in->fh, upcall + sizeof(struct fuse_write_in),
in->size, in->offset);

if (oh->error) {
@ -1027,6 +1115,17 @@ fuse_write(void)
return sizeof(struct fuse_out_header) + sizeof(struct fuse_write_out);
}

static uint32_t
not_implemented(const char *msg)
{
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "%s", msg);

oh->error = -ENOSYS;

return sizeof(struct fuse_out_header);
}


/* Auxiliary functions. */

@ -1101,4 +1200,7 @@ set_attr(struct fuse_attr *attr, const dav_node *node)
attr->uid = node->uid;
attr->gid = node->gid;
attr->rdev = 0;
/* TODO: set blocksize */
attr->blksize = 0;
attr->padding = 0;
}