Remove support for Coda

This commit is contained in:
wbaumann 2013-08-09 16:16:13 +00:00
parent 2c7e88f6c5
commit d61383d148
23 changed files with 2133 additions and 4154 deletions

View File

@ -1,21 +1,33 @@
# Copyright (C) 2002-2010 Free Software Foundation, Inc.
# Copyright (C) 2002-2012 Free Software Foundation, Inc.
#
# This file is free software, distributed under the terms of the GNU
# General Public License. As a special exception to the GNU General
# Public License, this file may be distributed as part of a program
# that contains a configuration script generated by Autoconf, under
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License,
# this file may be distributed as part of a program that
# contains a configuration script generated by Autoconf, under
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
#
# This file represents the specification of how gnulib-tool is used.
# It acts as a cache: It is written and read by gnulib-tool.
# In projects using CVS, this file is meant to be stored in CVS,
# like the configure.ac and various Makefile.am files.
# In projects that use version control, this file is meant to be put under
# version control, like the configure.ac and various Makefile.am files.


# Specification in the form of a command-line invocation:
# gnulib-tool --import --dir=. --lib=libgnu --source-base=gl --m4-base=config --po-base=glpo --doc-base=doc --tests-base=tests --aux-dir=config --no-libtool --macro-prefix=gl --po-domain=davfs2 canonicalize iconv_open rpmatch xalloc xstrndup xvasprintf
# gnulib-tool --import --dir=. --lib=libgnu --source-base=gl --m4-base=config --po-base=glpo --doc-base=doc --tests-base=tests --aux-dir=config --no-conditional-dependencies --no-libtool --macro-prefix=gl --po-domain=davfs2 canonicalize iconv_open rpmatch xalloc xstrndup xvasprintf

# Specification in the form of a few gnulib-tool.m4 macro invocations:
gl_LOCAL_DIR([])
@ -37,3 +49,4 @@ gl_LIB([libgnu])
gl_MAKEFILE_NAME([])
gl_MACRO_PREFIX([gl])
gl_PO_DOMAIN([davfs2])
gl_WITNESS_C_DOMAIN([])

View File

@ -104,13 +104,6 @@ Default: @GROUP@
.br
\fBOnly allowed in the system wide configuration file.\fR

.TP
.B kernel_fs
Which kernel file system to use, to integrate into the virtual file system.
Possible values are \fIfuse\fP and \fIcoda\fP.
.br
Default: fuse

.TP
.B buf_size
Size in KiByte of the buffer used to communicate with the kernel file system.

View File

@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2012-02-01 18:51+0100\n"
"POT-Creation-Date: 2013-08-09 12:15+0300\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"
@ -212,7 +212,7 @@ msgid "Default: @USER@"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:96 davfs2.conf.5:106 davfs2.conf.5:135 davfs2.conf.5:144
#: davfs2.conf.5:96 davfs2.conf.5:106 davfs2.conf.5:128 davfs2.conf.5:137
msgid "B<Only allowed in the system wide configuration file.>"
msgstr ""

@ -238,29 +238,11 @@ msgstr ""
#. type: TP
#: davfs2.conf.5:107
#, no-wrap
msgid "B<kernel_fs>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:111
msgid ""
"Which kernel file system to use, to integrate into the virtual file system. "
"Possible values are I<fuse> and I<coda>."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:113
msgid "Default: fuse"
msgstr ""

#. type: TP
#: davfs2.conf.5:114
#, no-wrap
msgid "B<buf_size>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:119
#: davfs2.conf.5:112
msgid ""
"Size in KiByte of the buffer used to communicate with the kernel file "
"system. Only usefull with I<fuse>, where read and write operations may "
@ -268,24 +250,24 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:121
#: davfs2.conf.5:114
msgid "Default: 16"
msgstr ""

#. type: SH
#: davfs2.conf.5:123
#: davfs2.conf.5:116
#, no-wrap
msgid "WebDAV Related Options"
msgstr ""

#. type: TP
#: davfs2.conf.5:125
#: davfs2.conf.5:118
#, no-wrap
msgid "B<use_proxy>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:131
#: davfs2.conf.5:124
msgid ""
"Whether to use a proxy to connect to the WebDAV server. 0 = no, 1 = yes. If "
"no proxy is defined in the configration file or the environment variables "
@ -293,19 +275,19 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:133 davfs2.conf.5:212 davfs2.conf.5:219 davfs2.conf.5:297
#: davfs2.conf.5:438
#: davfs2.conf.5:126 davfs2.conf.5:205 davfs2.conf.5:212 davfs2.conf.5:290
#: davfs2.conf.5:431
msgid "Default: 1"
msgstr ""

#. type: TP
#: davfs2.conf.5:136
#: davfs2.conf.5:129
#, no-wrap
msgid "B<proxy>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:142
#: davfs2.conf.5:135
msgid ""
"Name of the proxy. The name must be the fully qualified domain name (no "
"scheme). If the proxy port differs from the default of 8080, it must be "
@ -313,13 +295,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:145
#: davfs2.conf.5:138
#, no-wrap
msgid "B<trust_ca_cert>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:151 davfs2.conf.5:175
#: davfs2.conf.5:144 davfs2.conf.5:168
msgid ""
"Name of a certificate file in PEM format. The name of the file may be given "
"as absolute path or as file name only. In the latter case the directories "
@ -328,7 +310,7 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:157
#: davfs2.conf.5:150
msgid ""
"This option is useful when the certificate presented by the server cannot be "
"verified using the system's data base of trusted certificate authorities "
@ -338,7 +320,7 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:162
#: davfs2.conf.5:155
msgid ""
"B<Note:> Even if the server's certificate is trusted that does not mean it "
"is accepted. Additionally the certificate's date must be valid and either "
@ -346,29 +328,29 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:163
#: davfs2.conf.5:156
#, no-wrap
msgid "B<servercert>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:166
#: davfs2.conf.5:159
msgid "Same as B<trust_ca_cert> but badly named."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:168
#: davfs2.conf.5:161
msgid "B<Deprecated>"
msgstr ""

#. type: TP
#: davfs2.conf.5:169
#: davfs2.conf.5:162
#, no-wrap
msgid "B<trust_server_cert>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:181
#: davfs2.conf.5:174
msgid ""
"Usefull when the server's certificate can't be verified or is even invalid, "
"but B<you know> that you can trust this certificate. When the server "
@ -378,25 +360,25 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:183
#: davfs2.conf.5:176
msgid "This is the preferred option for self signed server certificates."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:186
#: davfs2.conf.5:179
msgid ""
"No other ways to verify the certificate will be tried and the certificate "
"will not be checked for validity."
msgstr ""

#. type: TP
#: davfs2.conf.5:187
#: davfs2.conf.5:180
#, no-wrap
msgid "B<clientcert>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:194
#: davfs2.conf.5:187
msgid ""
"Name of a certificate in PKCS#12 format that will be used to authenticate "
"with the server. The name of the file may be given as absolute path or as "
@ -406,13 +388,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:195 davfs2.conf.5:509
#: davfs2.conf.5:188 davfs2.conf.5:502
#, no-wrap
msgid "B<secrets>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:200
#: davfs2.conf.5:193
msgid ""
"Name of a file that holds the credentials for servers and the proxy, and "
"passwords to decrypt the client certificate. The name must be an absolute "
@ -420,25 +402,25 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:202
#: davfs2.conf.5:195
msgid "Default: ~/.@PACKAGE@/@SECRETSFILE@"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:205
#: davfs2.conf.5:198
msgid ""
"B<Only allowed in the user configuration file.> The system wide secrets file "
"is allways I<@SYS_CONF_DIR@/@SECRETSFILE@>."
msgstr ""

#. type: TP
#: davfs2.conf.5:206
#: davfs2.conf.5:199
#, no-wrap
msgid "B<ask_auth>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:210
#: davfs2.conf.5:203
msgid ""
"Ask the user interactively for credentials and passwords if not found in the "
"secretsfile. Ask the user if a servercert cannot be verified. 0 = no, 1 = "
@ -446,26 +428,26 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:213
#: davfs2.conf.5:206
#, no-wrap
msgid "B<use_locks>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:217
#: davfs2.conf.5:210
msgid ""
"Whether to lock files on the server when they are opened for writing. 0 = "
"no, 1 = yes."
msgstr ""

#. type: TP
#: davfs2.conf.5:220
#: davfs2.conf.5:213
#, no-wrap
msgid "B<lock_owner>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:225
#: davfs2.conf.5:218
msgid ""
"A string send to the server to identify the owner of a lock. If a WebDAV "
"resource is used at the same time by different clients using the same "
@ -473,36 +455,36 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:227
#: davfs2.conf.5:220
msgid "Default: the username from the credentials"
msgstr ""

#. type: TP
#: davfs2.conf.5:228
#: davfs2.conf.5:221
#, no-wrap
msgid "B<lock_timeout>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:232
#: davfs2.conf.5:225
msgid ""
"How long in seconds locks should be valid, before the server removes them. "
"The server may ignore this and set its own timeout value."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:234
#: davfs2.conf.5:227
msgid "Default: 1800"
msgstr ""

#. type: TP
#: davfs2.conf.5:235
#: davfs2.conf.5:228
#, no-wrap
msgid "B<lock_refresh>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:240
#: davfs2.conf.5:233
msgid ""
"That many seconds before the lock times out, B<@PROGRAM_NAME@> will try to "
"refresh the lock. The value should be substantially greater than "
@ -510,18 +492,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:242 davfs2.conf.5:428
#: davfs2.conf.5:235 davfs2.conf.5:421
msgid "Default: 60"
msgstr ""

#. type: TP
#: davfs2.conf.5:243
#: davfs2.conf.5:236
#, no-wrap
msgid "B<use_expect100>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:249
#: davfs2.conf.5:242
msgid ""
"To avoid uploading big files that will be refused by the server, "
"B<@PROGRAM_NAME@> uses the header I<expect: 100-continue> to get the o.k. "
@ -530,19 +512,19 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:251 davfs2.conf.5:259 davfs2.conf.5:277 davfs2.conf.5:287
#: davfs2.conf.5:304 davfs2.conf.5:458
#: davfs2.conf.5:244 davfs2.conf.5:252 davfs2.conf.5:270 davfs2.conf.5:280
#: davfs2.conf.5:297 davfs2.conf.5:451
msgid "Default: 0"
msgstr ""

#. type: TP
#: davfs2.conf.5:252
#: davfs2.conf.5:245
#, no-wrap
msgid "B<if_match_bug>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:257
#: davfs2.conf.5:250
msgid ""
"Some servers do not handle If-Match and If-None-Match-headers correctly. "
"This otion tells B<@PROGRAM_NAME@> to use HEAD instead of thes headers. 0 = "
@ -550,13 +532,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:260
#: davfs2.conf.5:253
#, no-wrap
msgid "B<drop_weak_etags>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:269
#: davfs2.conf.5:262
msgid ""
"Popular servers send a weak etag whenever they are not able to calculate a "
"strong one. This weak etag will never be valid, but after one second it is "
@ -568,7 +550,7 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:273
#: davfs2.conf.5:266
msgid ""
"You should turn this on, when you can't use locks and there is the danger of "
"concurrent access to the same resource. In this case the etag is not used at "
@ -576,18 +558,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:275
#: davfs2.conf.5:268
msgid "0 = no, 1 = yes."
msgstr ""

#. type: TP
#: davfs2.conf.5:278
#: davfs2.conf.5:271
#, no-wrap
msgid "B<allow_cookie>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:285
#: davfs2.conf.5:278
msgid ""
"Some servers will only work when they are allowed to set a cookie and this "
"cookie is returned in subsequent requests. This option adds very simple "
@ -596,13 +578,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:288
#: davfs2.conf.5:281
#, no-wrap
msgid "B<precheck>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:295
#: davfs2.conf.5:288
msgid ""
"If option B<if_match_bug> is set: use HEAD-requests to check for existence "
"or modification of a file to avoid unintended overwriting what somebody else "
@ -611,26 +593,26 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:298
#: davfs2.conf.5:291
#, no-wrap
msgid "B<ignore_dav_header>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:302
#: davfs2.conf.5:295
msgid ""
"Some servers send wrong information about their capabilities in the DAV-"
"header. In this case the header should be ignored."
msgstr ""

#. type: TP
#: davfs2.conf.5:305
#: davfs2.conf.5:298
#, no-wrap
msgid "B<server_charset>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:311
#: davfs2.conf.5:304
msgid ""
"When extracting file names from the path component of the URL, "
"B<@PROGRAM_NAME@> will assume they are encoded using this character set and "
@ -639,7 +621,7 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:319
#: davfs2.conf.5:312
msgid ""
"There is no means in HTTP to know the character encoding of the path "
"component. There may be even different encodings within the same path, as "
@ -651,18 +633,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:321
#: davfs2.conf.5:314
msgid "Default: no character set conversion"
msgstr ""

#. type: TP
#: davfs2.conf.5:322
#: davfs2.conf.5:315
#, no-wrap
msgid "B<connect_timeout>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:328
#: davfs2.conf.5:321
msgid ""
"When creating a TCP connection to the server B<@PROGRAM_NAME@> will wait "
"that many seconds for an answer before assuming an error. If a value of '0' "
@ -671,43 +653,43 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:331
#: davfs2.conf.5:324
msgid ""
"This parameter only takes effect if the version of neon in use (neon version "
"E<gt> 0.26) and the OS support non-blocking I/O."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:333 davfs2.conf.5:448
#: davfs2.conf.5:326 davfs2.conf.5:441
msgid "Default: 10"
msgstr ""

#. type: TP
#: davfs2.conf.5:334
#: davfs2.conf.5:327
#, no-wrap
msgid "B<read_timeout>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:338
#: davfs2.conf.5:331
msgid ""
"How long in seconds B<@PROGRAM_NAME@> will wait for an answer from the "
"server before assuming an error."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:340 davfs2.conf.5:348
#: davfs2.conf.5:333 davfs2.conf.5:341
msgid "Default: 30"
msgstr ""

#. type: TP
#: davfs2.conf.5:341
#: davfs2.conf.5:334
#, no-wrap
msgid "B<retry>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:346
#: davfs2.conf.5:339
msgid ""
"When B<@PROGRAM_NAME@> can not reach the server it will try again after "
"B<retry> seconds. For subsequent retries the interval will be increased up "
@ -715,36 +697,36 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:349
#: davfs2.conf.5:342
#, no-wrap
msgid "B<max_retry>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:352
#: davfs2.conf.5:345
msgid "Maximum value of the retry interval."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:354
#: davfs2.conf.5:347
msgid "Default: 300"
msgstr ""

#. type: TP
#: davfs2.conf.5:355
#: davfs2.conf.5:348
#, no-wrap
msgid "B<max_upload_attempts>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:359
#: davfs2.conf.5:352
msgid ""
"When uploading a changed file fails temporarily B<@PROGRAM_NAME@> will retry "
"with increasing intervals, but not more often than this."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:364
#: davfs2.conf.5:357
msgid ""
"With a bad connection this will cause additional traffic. To reduce traffic "
"caused by unsuccessful attempts option B<use_expect100> can be set. But "
@ -752,18 +734,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:366
#: davfs2.conf.5:359
msgid "Default: 15"
msgstr ""

#. type: TP
#: davfs2.conf.5:367
#: davfs2.conf.5:360
#, no-wrap
msgid "B<add_header>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:373
#: davfs2.conf.5:366
msgid ""
"Your server might expect special headers to do what you want. Different from "
"other options, this one takes two values: the name of the header and its "
@ -772,17 +754,17 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:375
#: davfs2.conf.5:368
msgid "add_header Translate F"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:377
#: davfs2.conf.5:370
msgid "B<@PROGRAM_NAME@> will add header \"Translate: F\" on all requests."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:381
#: davfs2.conf.5:374
msgid ""
"This option is cumulative. You can enter more than one add_header option and "
"all of them will be added. Also add_header options from @SYS_CONF_DIR@/"
@ -790,19 +772,19 @@ msgid ""
msgstr ""

#. type: SH
#: davfs2.conf.5:383
#: davfs2.conf.5:376
#, no-wrap
msgid "Cache Related Options"
msgstr ""

#. type: TP
#: davfs2.conf.5:385
#: davfs2.conf.5:378
#, no-wrap
msgid "B<backup_dir>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:390
#: davfs2.conf.5:383
msgid ""
"Each mounted @PACKAGE@ file system has a directory to store backups of files "
"that could not be stored back to the server. This sets the name of this "
@ -810,25 +792,25 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:392
#: davfs2.conf.5:385
msgid "Default: lost+found"
msgstr ""

#. type: TP
#: davfs2.conf.5:393
#: davfs2.conf.5:386
#, no-wrap
msgid "B<cache_dir>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:397
#: davfs2.conf.5:390
msgid ""
"The directory where B<@PROGRAM_NAME@> will store cached files. For every "
"mount point a subdirectory will be created."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:401
#: davfs2.conf.5:394
msgid ""
"In the systemwide configuration file this will set the system wide cache, "
"used by root. In a users configuration file it will set the cache used by "
@ -836,18 +818,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:403
#: davfs2.conf.5:396
msgid "Defaults: @SYS_CACHE_DIR@ and ~/.@PACKAGE@/cache"
msgstr ""

#. type: TP
#: davfs2.conf.5:404
#: davfs2.conf.5:397
#, no-wrap
msgid "B<cache_size>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:409
#: davfs2.conf.5:402
msgid ""
"The amount of disk space in MiByte that may be used. B<@PROGRAM_NAME@> will "
"always take enough space to cache open files, ignoring this value if "
@ -855,18 +837,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:411
#: davfs2.conf.5:404
msgid "Default: 50"
msgstr ""

#. type: TP
#: davfs2.conf.5:412
#: davfs2.conf.5:405
#, no-wrap
msgid "B<table_size>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:418
#: davfs2.conf.5:411
msgid ""
"B<@PROGRAM_NAME@> maintains a hash table with an entry for each known file "
"or directory. This gives the number of entries in this table. For large file "
@ -875,18 +857,18 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:420
#: davfs2.conf.5:413
msgid "Default: 1024"
msgstr ""

#. type: TP
#: davfs2.conf.5:421
#: davfs2.conf.5:414
#, no-wrap
msgid "B<dir_refresh>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:426
#: davfs2.conf.5:419
msgid ""
"After B<@PROGRAM_NAME@> has got information about files in a directory it "
"considers it valid for this time in seconds. Note: This does not affect "
@ -894,13 +876,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:429
#: davfs2.conf.5:422
#, no-wrap
msgid "B<file_refresh>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:436
#: davfs2.conf.5:429
msgid ""
"When a file or directory is opened by an application, B<@PROGRAM_NAME@> will "
"first check the server for a newer version. But some applications do open "
@ -910,13 +892,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:439
#: davfs2.conf.5:432
#, no-wrap
msgid "B<delay_upload>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:446
#: davfs2.conf.5:439
msgid ""
"When a file that has been changed is closed, B<@PROGRAM_NAME@> will wait "
"that many seconds before it will upload it to the server. This will avoid "
@ -926,13 +908,13 @@ msgid ""
msgstr ""

#. type: TP
#: davfs2.conf.5:449
#: davfs2.conf.5:442
#, no-wrap
msgid "B<gui_optimize>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:456
#: davfs2.conf.5:449
msgid ""
"When a file is opened, B<@PROGRAM_NAME@> will have to check the server "
"whether there is a newer version. Graphical User Interfaces tend to open "
@ -942,19 +924,19 @@ msgid ""
msgstr ""

#. type: SH
#: davfs2.conf.5:460
#: davfs2.conf.5:453
#, no-wrap
msgid "Debugging Options"
msgstr ""

#. type: TP
#: davfs2.conf.5:462
#: davfs2.conf.5:455
#, no-wrap
msgid "B<debug>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:470
#: davfs2.conf.5:463
msgid ""
"Send debug messages to the syslog daemon. The value tells what kind of "
"information shall be logged. The messages are send with facility LOG_DAEMON "
@ -965,7 +947,7 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:474
#: davfs2.conf.5:467
msgid ""
"Unlike other options, this option is cumulative. If there are several debug "
"entries with different values, all of them will be applied. Also debug "
@ -974,171 +956,171 @@ msgid ""
msgstr ""

#. type: Plain text
#: davfs2.conf.5:477
#: davfs2.conf.5:470
msgid ""
"B<Note:> Debug messages let the log-files grow quickly. Never use this "
"option in normal operation of mount.davfs."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:479
#: davfs2.conf.5:472
msgid "Default: no debugging messages"
msgstr ""

#. type: TP
#: davfs2.conf.5:480
#: davfs2.conf.5:473
#, no-wrap
msgid "B<Recognized values:>"
msgstr ""

#. type: TP
#: davfs2.conf.5:482
#: davfs2.conf.5:475
#, no-wrap
msgid "B<config>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:485
#: davfs2.conf.5:478
msgid "Command line and configuration options."
msgstr ""

#. type: TP
#: davfs2.conf.5:485
#: davfs2.conf.5:478
#, no-wrap
msgid "B<kernel>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:488
#: davfs2.conf.5:481
msgid "Upcalls from the kernel file system."
msgstr ""

#. type: TP
#: davfs2.conf.5:488
#: davfs2.conf.5:481
#, no-wrap
msgid "B<cache>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:491
#: davfs2.conf.5:484
msgid "Cache operations like adding and removing nodes."
msgstr ""

#. type: TP
#: davfs2.conf.5:491
#: davfs2.conf.5:484
#, no-wrap
msgid "B<http>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:494
#: davfs2.conf.5:487
msgid "HTTP headers."
msgstr ""

#. type: TP
#: davfs2.conf.5:494
#: davfs2.conf.5:487
#, no-wrap
msgid "B<xml>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:497
#: davfs2.conf.5:490
msgid "Parsing of the XML-body of WebDAV-requests."
msgstr ""

#. type: TP
#: davfs2.conf.5:497
#: davfs2.conf.5:490
#, no-wrap
msgid "B<httpauth>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:500
#: davfs2.conf.5:493
msgid "Negotiation of authentication."
msgstr ""

#. type: TP
#: davfs2.conf.5:500
#: davfs2.conf.5:493
#, no-wrap
msgid "B<locks>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:503
#: davfs2.conf.5:496
msgid "Information about locks."
msgstr ""

#. type: TP
#: davfs2.conf.5:503
#: davfs2.conf.5:496
#, no-wrap
msgid "B<ssl>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:506
#: davfs2.conf.5:499
msgid "TLS/SSL related stuff like certificates."
msgstr ""

#. type: TP
#: davfs2.conf.5:506
#: davfs2.conf.5:499
#, no-wrap
msgid "B<httpbody>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:509
#: davfs2.conf.5:502
msgid "Complete body of HTTP-responses."
msgstr ""

#. type: Plain text
#: davfs2.conf.5:512
#: davfs2.conf.5:505
msgid ""
"Also print confidential information, which is usually omitted or obscured."
msgstr ""

#. type: TP
#: davfs2.conf.5:512
#: davfs2.conf.5:505
#, no-wrap
msgid "B<most>"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:515
#: davfs2.conf.5:508
msgid "Includes config, kernel, cache and http."
msgstr ""

#. type: SH
#: davfs2.conf.5:518 mount.davfs.8:533 umount.davfs.8:79
#: davfs2.conf.5:511 mount.davfs.8:533 umount.davfs.8:79
#, no-wrap
msgid "AUTHORS"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:522
#: davfs2.conf.5:515
msgid ""
"This man page was written by by Werner Baumann E<lt>werner."
"baumann@onlinehome.deE<gt>."
msgstr ""

#. type: SH
#: davfs2.conf.5:524 mount.davfs.8:550 umount.davfs.8:84
#: davfs2.conf.5:517 mount.davfs.8:550 umount.davfs.8:84
#, no-wrap
msgid "DAVFS2 HOME"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:527 mount.davfs.8:553 umount.davfs.8:87
#: davfs2.conf.5:520 mount.davfs.8:553 umount.davfs.8:87
msgid "@PACKAGE_BUGREPORT@"
msgstr ""

#. type: SH
#: davfs2.conf.5:529 mount.davfs.8:555 umount.davfs.8:89
#: davfs2.conf.5:522 mount.davfs.8:555 umount.davfs.8:89
#, no-wrap
msgid "SEE ALSO"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:535
#: davfs2.conf.5:528
msgid ""
"B<@PROGRAM_NAME@>(8), B<u@PROGRAM_NAME@>(8), B<mount>(8), B<umount>(8), "
"B<fstab>(5)"

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
# #-#-#-#-# mount.davfs.8.po (davfs2) #-#-#-#-#
# German translation of mount.davfs man page.
# Copyright (C) 2007 Werner Baumann
# Copyright (C) 2007, 2013 Werner Baumann
# Werner Baumann <werner.baumann@onlinehome.de>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: davfs2 1.4.0\n"
"POT-Creation-Date: 2012-03-18 12:02+0100\n"
"PO-Revision-Date: 2012-03-18 12:03+0100\n"
"POT-Creation-Date: 2013-08-09 12:15+0300\n"
"PO-Revision-Date: 2013-08-09 13:03+0100\n"
"Last-Translator: Werner Baumann <werner.baumann@onlinehome.de>\n"
"Language-Team: \n"
"Language: \n"
@ -38,27 +38,27 @@ msgstr "BESCHREIBUNG"

# type: SH
#. type: SH
#: davfs2.conf.5:518 mount.davfs.8:533 umount.davfs.8:79
#: davfs2.conf.5:511 mount.davfs.8:533 umount.davfs.8:79
#, no-wrap
msgid "AUTHORS"
msgstr "AUTOREN"

# type: SH
#. type: SH
#: davfs2.conf.5:524 mount.davfs.8:550 umount.davfs.8:84
#: davfs2.conf.5:517 mount.davfs.8:550 umount.davfs.8:84
#, no-wrap
msgid "DAVFS2 HOME"
msgstr "DAVFS2 HOME"

# type: TH
#. type: Plain text
#: davfs2.conf.5:527 mount.davfs.8:553 umount.davfs.8:87
#: davfs2.conf.5:520 mount.davfs.8:553 umount.davfs.8:87
msgid "@PACKAGE_BUGREPORT@"
msgstr "@PACKAGE_BUGREPORT@"

# type: SH
#. type: SH
#: davfs2.conf.5:529 mount.davfs.8:555 umount.davfs.8:89
#: davfs2.conf.5:522 mount.davfs.8:555 umount.davfs.8:89
#, no-wrap
msgid "SEE ALSO"
msgstr "SIEHE AUCH"
@ -157,13 +157,13 @@ msgstr ""
msgid ""
"B<@PACKAGE@> supports B<TLS/SSL> (if the neon library supports it) and "
"proxies. B<@PROGRAM_NAME@> runs as a daemon in userspace. It integrates into "
"the virtual file system by either the coda or the fuse kernel files system. "
"Currently CODA_KERNEL_VERSION 3 and FUSE_KERNEL_VERSION 7 are supported."
"the virtual file system by using the fuse kernel files system. Currently "
"FUSE_KERNEL_VERSION 7 is supported."
msgstr ""
"B<@PACKAGE@> unterstützt B<TLS/SSL> (falls die Neon-Bibliothek es "
"unterstützt) und Verbindungen über einen Proxy. Es wird über das coda oder "
"das fuse Kernel-Dateisystem in das virtuelle Dateisystem eingebunden. "
"Derzeit werden CODA_KERNEL_VERSION 3 und FUSE_KERNEL_VERSION 7 unterstützt."
"unterstützt) und Verbindungen über einen Proxy. Es wird über das fuse Kernel-"
"Dateisystem in das virtuelle Dateisystem eingebunden. Derzeit wird die "
"FUSE_KERNEL_VERSION 7 unterstützt."

# type: Plain text
#. type: Plain text

File diff suppressed because it is too large Load Diff

View File

@ -39,8 +39,8 @@ from different locations.
.PP
\fB@PACKAGE@\fR supports \fBTLS/SSL\fR (if the neon library supports it) and
proxies. \fB@PROGRAM_NAME@\fR runs as a daemon in userspace. It integrates into the
virtual file system by either the coda or the fuse kernel files system.
Currently CODA_KERNEL_VERSION 3 and FUSE_KERNEL_VERSION 7 are supported.
virtual file system by using the fuse kernel files system.
Currently FUSE_KERNEL_VERSION 7 is supported.

.PP
\fB@PROGRAM_NAME@\fR is usually invoked by the \fBmount\fR(8) command when

View File

@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2012-03-18 12:02+0100\n"
"POT-Creation-Date: 2013-08-09 12:15+0300\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"
@ -35,24 +35,24 @@ msgid "DESCRIPTION"
msgstr ""

#. type: SH
#: davfs2.conf.5:518 mount.davfs.8:533 umount.davfs.8:79
#: davfs2.conf.5:511 mount.davfs.8:533 umount.davfs.8:79
#, no-wrap
msgid "AUTHORS"
msgstr ""

#. type: SH
#: davfs2.conf.5:524 mount.davfs.8:550 umount.davfs.8:84
#: davfs2.conf.5:517 mount.davfs.8:550 umount.davfs.8:84
#, no-wrap
msgid "DAVFS2 HOME"
msgstr ""

#. type: Plain text
#: davfs2.conf.5:527 mount.davfs.8:553 umount.davfs.8:87
#: davfs2.conf.5:520 mount.davfs.8:553 umount.davfs.8:87
msgid "@PACKAGE_BUGREPORT@"
msgstr ""

#. type: SH
#: davfs2.conf.5:529 mount.davfs.8:555 umount.davfs.8:89
#: davfs2.conf.5:522 mount.davfs.8:555 umount.davfs.8:89
#, no-wrap
msgid "SEE ALSO"
msgstr ""
@ -130,8 +130,8 @@ msgstr ""
msgid ""
"B<@PACKAGE@> supports B<TLS/SSL> (if the neon library supports it) and "
"proxies. B<@PROGRAM_NAME@> runs as a daemon in userspace. It integrates into "
"the virtual file system by either the coda or the fuse kernel files system. "
"Currently CODA_KERNEL_VERSION 3 and FUSE_KERNEL_VERSION 7 are supported."
"the virtual file system by using the fuse kernel files system. Currently "
"FUSE_KERNEL_VERSION 7 is supported."
msgstr ""

#. type: Plain text

View File

@ -22,7 +22,7 @@
de:de/davfs2.conf.5 add_de:de/davfs2.conf.5.translator \
es:es/davfs2.conf.5 \
opt_de:"-L UTF-8 -A UTF-8" \
opt_es:"-k 75 -L UTF-8"
opt_es:"-k 74 -L UTF-8"

[type:man] mount.davfs.8 \
de:de/mount.davfs.8 add_de:de/mount.davfs.8.translator \

View File

@ -1,7 +1,5 @@
# List of source files which contain translatable strings.
src/cache.c
src/dav_coda.c
src/dav_fuse.c
src/kernel_interface.c
src/mount_davfs.c
src/umount_davfs.c

393
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: 2012-02-01 18:13+0100\n"
"POT-Creation-Date: 2013-08-09 12:39+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:662
#: src/cache.c:656
#, 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:667
#: src/cache.c:661
#, c-format
msgid "Last try succeeded.\n"
msgstr "Poslední pokus byl úspěšný.\n"

#: src/cache.c:670
#: src/cache.c:664
#, 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:673
#: src/cache.c:667
#, c-format
msgid ""
"Mounting failed.\n"
@ -49,211 +49,177 @@ msgstr ""
"Připojení selhalo;\n"
"%s"

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

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

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

#: src/cache.c:943
#: src/cache.c:925
#, 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:2565 src/cache.c:2598
#: src/cache.c:2512 src/cache.c:2545
#, c-format
msgid "can't create cache file %s"
msgstr "nemohu vytvořit soubor vyrovnávací paměti %s"

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

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

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

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

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

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

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

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

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

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

#: src/cache.c:2971
#: src/cache.c:2913
#, 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/dav_coda.c:173 src/dav_fuse.c:173
msgid "can't allocate message buffer"
msgstr "nemohu alokovat buffer pro zprávu"

#: src/kernel_interface.c:114
#, c-format
msgid "trying fuse kernel file system"
msgstr "zkouším jaderný souborový systém fuse"

#: src/kernel_interface.c:121
#, c-format
msgid "fuse device opened successfully"
msgstr "zařízení fuse otevřeno úspěšně"

#: src/kernel_interface.c:133
#, c-format
msgid "trying coda kernel file system"
msgstr "zkouším jaderný souborový systém coda"

#: src/kernel_interface.c:137
#, c-format
msgid "coda device opened successfully"
msgstr "zařízení coda otevřeno úspěšně"

#: src/kernel_interface.c:145
#, c-format
msgid "unknown kernel file system %s"
msgstr "neznámý jaderný souborový systém %s"

#: src/kernel_interface.c:189
#, c-format
msgid "no free coda device to mount"
msgstr "pro připojení není volné žádné coda zařízení"

#: src/kernel_interface.c:198
#, c-format
msgid "CODA_KERNEL_VERSION %u not supported"
msgstr "CODA_KERNEL_VERSION %u není podporováno"

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

#: src/kernel_interface.c:259
#, c-format
msgid "can't mount using fuse kernel file system"
msgstr "nemohu připojit jaderný souborový systém fuse"
#: src/kernel_interface.c:217
#, fuzzy, c-format
msgid "mounting failed"
msgstr "odpojení selhalo"

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

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:487 src/mount_davfs.c:581 src/mount_davfs.c:607
#: src/mount_davfs.c:612 src/mount_davfs.c:620
#: 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
#, c-format
msgid "can't access directory %s"
msgstr "nemohu přistupovat k adresáři %s"

#: src/mount_davfs.c:493 src/mount_davfs.c:587
#: src/mount_davfs.c:483 src/mount_davfs.c:577
#, 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:498 src/mount_davfs.c:593
#: src/mount_davfs.c:488 src/mount_davfs.c:583
#, c-format
msgid "can't change group of directory %s"
msgstr "nemohu změnit skupinu adresáře %s"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:770
#: src/mount_davfs.c:757
#, 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:782
#: src/mount_davfs.c:769
#, 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:793
#: src/mount_davfs.c:780
#, 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:814
#, c-format
msgid "can't mount %s on %s"
msgstr "není možno připojit %s do %s"

#: src/mount_davfs.c:816
#, c-format
msgid "kernel does not know file system %s"
msgstr "kernel nezná souborový systém %s"

#: src/mount_davfs.c:818
#, c-format
msgid "mount point is busy"
msgstr "přípojný bod je zaneprázdněn"

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

#: src/mount_davfs.c:908 src/umount_davfs.c:92
#: src/mount_davfs.c:844 src/umount_davfs.c:92
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
@ -365,87 +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:924 src/umount_davfs.c:117
#: src/mount_davfs.c:860 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:933 src/umount_davfs.c:123
#: src/mount_davfs.c:869 src/umount_davfs.c:123
#, c-format
msgid "missing argument"
msgstr "chybějící argument"

#: src/mount_davfs.c:946
#: src/mount_davfs.c:882
#, 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:949 src/umount_davfs.c:125
#: src/mount_davfs.c:885 src/umount_davfs.c:125
#, c-format
msgid "too many arguments"
msgstr "příliš mnoho argumentů"

#: src/mount_davfs.c:956
#: src/mount_davfs.c:892
#, 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:961
#: src/mount_davfs.c:897
#, c-format
msgid "no WebDAV-server specified"
msgstr "nebyl zadán žádný WebDAV server"

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

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

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

#: src/mount_davfs.c:1042 src/mount_davfs.c:1069
#, c-format
msgid "can't read server certificate %s"
msgstr "nemohu přečíst serverový cerifikát %s"

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

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

#: src/mount_davfs.c:1110
#, 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:1153
#: src/mount_davfs.c:1004
#, c-format
msgid "program is not setuid root"
msgstr "program není spuštěn jako setuid root"

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

#: src/mount_davfs.c:1201 src/mount_davfs.c:1214 src/mount_davfs.c:1216
#: src/mount_davfs.c:1234 src/mount_davfs.c:1236 src/webdav.c:439
#: 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
msgid "Password: "
msgstr "Heslo: "

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

#: src/mount_davfs.c:1207 src/mount_davfs.c:1227
#: src/mount_davfs.c:1055 src/mount_davfs.c:1075
msgid "Username:"
msgstr ""

#: src/mount_davfs.c:1211
#: src/mount_davfs.c:1059
#, c-format
msgid ""
"Please enter the password to authenticate user %s with proxy\n"
@ -468,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:1225
#: src/mount_davfs.c:1073
#, fuzzy, c-format
msgid ""
"Please enter the username to authenticate with server\n"
@ -478,7 +409,7 @@ msgstr ""
"%s (nebo pouze stiskně enter, pokud nic zadat nechcete).\n"
"Uživatelské jméno: "

#: src/mount_davfs.c:1231
#: src/mount_davfs.c:1079
#, c-format
msgid ""
"Please enter the password to authenticate user %s with server\n"
@ -487,60 +418,94 @@ 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:1303
#: src/mount_davfs.c:1097
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
"certificate %s.\n"
msgstr ""
"Zadejte prosím heslo pro dešifrování klientského\n"
"certifikátu %s.\n"

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

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

#: src/mount_davfs.c:1343
#: src/mount_davfs.c:1206
#, 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:1369
#: src/mount_davfs.c:1232
#, 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:1372
#: src/mount_davfs.c:1235
#, 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:1375
#: src/mount_davfs.c:1238
#, 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:1652
#: src/mount_davfs.c:1513
#, c-format
msgid "option %s requires argument"
msgstr "volba %s vyžaduje argument"

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

#: src/mount_davfs.c:2100 src/mount_davfs.c:2330
#: src/mount_davfs.c:1976
#, 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
#, c-format
msgid "can't read client certificate %s"
msgstr "nelze přečíst klientský certifikát %s"

#: src/mount_davfs.c:2012
#, 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
#, 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
#, fuzzy, c-format
msgid "opening %s failed"
msgstr "odpojení selhalo"

#: src/mount_davfs.c:2121 src/mount_davfs.c:2166 src/mount_davfs.c:2258
#: src/mount_davfs.c:2346 src/mount_davfs.c:2413
#: 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
#, c-format
msgid "malformed line"
msgstr "špatně zapsaný řádek"

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

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

#: src/mount_davfs.c:2549
#: src/mount_davfs.c:2500
#, c-format
msgid ""
"To mount a WebDAV-resource don't call %s directly, but use\n"
@ -562,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:2551
#: src/mount_davfs.c:2502
#, c-format
msgid ""
" mount <mountpoint> : or\n"
@ -573,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:2554
#: src/mount_davfs.c:2505
#, c-format
msgid ""
" mount -t davfs <server-url> <mountpoint> [-o options]\n"
@ -590,7 +555,7 @@ msgstr ""
" označuje seznam voleb oddělených čárkou.\n"
"\n"

#: src/mount_davfs.c:2559
#: src/mount_davfs.c:2510
#, c-format
msgid ""
"Recognised options:\n"
@ -609,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:2565
#: src/mount_davfs.c:2516
#, c-format
msgid ""
" ro : mount read-only\n"
@ -724,95 +689,81 @@ msgstr ""
msgid "neon library does not support TLS/SSL"
msgstr "knihovna neon nepodporuje TLS/SSL"

#: src/webdav.c:437
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
"certificate %s.\n"
msgstr ""
"Zadejte prosím heslo pro dešifrování klientského\n"
"certifikátu %s.\n"

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

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

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

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

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

#: src/webdav.c:1642
#: src/webdav.c:1612
#, 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:1952 src/webdav.c:1981 src/webdav.c:2018
#: src/webdav.c:1922 src/webdav.c:1951 src/webdav.c:1988
#, c-format
msgid "the server certificate is not trusted"
msgstr "certifikát serveru je nedůvěryhodný"

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

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

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

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

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

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

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

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

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

#: src/webdav.c:1992
#: src/webdav.c:1962
#, c-format
msgid ""
"You only should accept this certificate, if you can\n"
@ -823,30 +774,66 @@ 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:1995
#: src/webdav.c:1965
#, c-format
msgid "Accept certificate for this session? [y,N] "
msgstr "Přijmout certifikát pro toto sezení? [y,N] "

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

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

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

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

#~ msgid "trying fuse kernel file system"
#~ msgstr "zkouším jaderný souborový systém fuse"

#~ msgid "fuse device opened successfully"
#~ msgstr "zařízení fuse otevřeno úspěšně"

#~ msgid "trying coda kernel file system"
#~ msgstr "zkouším jaderný souborový systém coda"

#~ msgid "coda device opened successfully"
#~ msgstr "zařízení coda otevřeno úspěšně"

#~ msgid "unknown kernel file system %s"
#~ msgstr "neznámý jaderný souborový systém %s"

#~ msgid "no free coda device to mount"
#~ msgstr "pro připojení není volné žádné coda zařízení"

#~ msgid "CODA_KERNEL_VERSION %u not supported"
#~ msgstr "CODA_KERNEL_VERSION %u není podporováno"

#~ msgid "can't mount using fuse kernel file system"
#~ msgstr "nemohu připojit jaderný souborový systém fuse"

#~ msgid "can't mount %s on %s"
#~ msgstr "není možno připojit %s do %s"

#~ msgid "kernel does not know file system %s"
#~ msgstr "kernel nezná souborový systém %s"

#~ msgid "mount point is busy"
#~ msgstr "přípojný bod je zaneprázdněn"

#~ msgid "can't read server certificate %s"
#~ msgstr "nemohu přečíst serverový cerifikát %s"

#~ msgid "can't get home directory for uid %i"
#~ msgstr "nemohu zjistit domovský adresář pro uid %i"


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: 2012-02-01 18:13+0100\n"
"POT-Creation-Date: 2013-08-09 12:39+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,236 +18,202 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

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

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

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

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

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

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

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

#: src/cache.c:943
#: src/cache.c:925
#, 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:2565 src/cache.c:2598
#: src/cache.c:2512 src/cache.c:2545
#, c-format
msgid "can't create cache file %s"
msgstr ""

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

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

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

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

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

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

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

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

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

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

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

#: src/dav_coda.c:173 src/dav_fuse.c:173
msgid "can't allocate message buffer"
msgstr ""

#: src/kernel_interface.c:114
#, c-format
msgid "trying fuse kernel file system"
msgstr ""

#: src/kernel_interface.c:121
#, c-format
msgid "fuse device opened successfully"
msgstr ""

#: src/kernel_interface.c:133
#, c-format
msgid "trying coda kernel file system"
msgstr ""

#: src/kernel_interface.c:137
#, c-format
msgid "coda device opened successfully"
msgstr ""

#: src/kernel_interface.c:145
#, c-format
msgid "unknown kernel file system %s"
msgstr ""

#: src/kernel_interface.c:189
#, c-format
msgid "no free coda device to mount"
msgstr ""

#: src/kernel_interface.c:198
#, c-format
msgid "CODA_KERNEL_VERSION %u not supported"
msgstr ""

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

#: src/kernel_interface.c:259
#: src/kernel_interface.c:217
#, c-format
msgid "can't mount using fuse kernel file system"
msgid "mounting failed"
msgstr ""

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:483 src/mount_davfs.c:577 src/mount_davfs.c:603
#: src/mount_davfs.c:473 src/mount_davfs.c:567 src/mount_davfs.c:593
#, c-format
msgid "can't create directory %s"
msgstr ""

#: src/mount_davfs.c:487 src/mount_davfs.c:581 src/mount_davfs.c:607
#: src/mount_davfs.c:612 src/mount_davfs.c:620
#: 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
#, c-format
msgid "can't access directory %s"
msgstr ""

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:814
#, c-format
msgid "can't mount %s on %s"
msgstr ""

#: src/mount_davfs.c:816
#, c-format
msgid "kernel does not know file system %s"
msgstr ""

#: src/mount_davfs.c:818
#, c-format
msgid "mount point is busy"
msgstr ""

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

#: src/mount_davfs.c:908 src/umount_davfs.c:92
#: src/mount_davfs.c:844 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:924 src/umount_davfs.c:117
#: src/mount_davfs.c:860 src/umount_davfs.c:117
#, c-format
msgid "unknown error parsing arguments"
msgstr ""

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

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:1099 src/webdav.c:432
#, c-format
msgid "can't read client certificate %s"
msgstr ""

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

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

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

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

#: src/mount_davfs.c:1201 src/mount_davfs.c:1214 src/mount_davfs.c:1216
#: src/mount_davfs.c:1234 src/mount_davfs.c:1236 src/webdav.c:439
#: 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
msgid "Password: "
msgstr ""

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

#: src/mount_davfs.c:1207 src/mount_davfs.c:1227
#: src/mount_davfs.c:1055 src/mount_davfs.c:1075
msgid "Username:"
msgstr ""

#: src/mount_davfs.c:1211
#: src/mount_davfs.c:1059
#, 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:1225
#: src/mount_davfs.c:1073
#, c-format
msgid ""
"Please enter the username to authenticate with server\n"
"%s or hit enter for none.\n"
msgstr ""

#: src/mount_davfs.c:1231
#: src/mount_davfs.c:1079
#, 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:1303
#: src/mount_davfs.c:1097
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
"certificate %s.\n"
msgstr ""

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

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

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

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

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

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:2121 src/mount_davfs.c:2166 src/mount_davfs.c:2258
#: src/mount_davfs.c:2346 src/mount_davfs.c:2413
#: 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
#, c-format
msgid "malformed line"
msgstr ""

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

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

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

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

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

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

#: src/mount_davfs.c:2565
#: src/mount_davfs.c:2516
#, c-format
msgid ""
" ro : mount read-only\n"
@ -652,93 +615,81 @@ msgstr ""
msgid "neon library does not support TLS/SSL"
msgstr ""

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

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

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

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

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

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

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

#: src/webdav.c:1952 src/webdav.c:1981 src/webdav.c:2018
#: src/webdav.c:1922 src/webdav.c:1951 src/webdav.c:1988
#, c-format
msgid "the server certificate is not trusted"
msgstr ""

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

370
po/de.po
View File

@ -1,5 +1,5 @@
# davfs2 messages de.
# Copyright (C) 2008, 2009 Werner Baumann <werner.baumann@onlinehome.de>
# Copyright (C) 2008, 2009, 2013 Werner Baumann <werner.baumann@onlinehome.de>
# This file is distributed under the same license as the PACKAGE package.
# Werner Baumann <werner.baumann@onlinehome.de>, 2009.
#
@ -8,8 +8,8 @@ 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: 2012-02-01 18:13+0100\n"
"PO-Revision-Date: 2012-02-01 19:14+0100\n"
"POT-Creation-Date: 2013-08-09 12:39+0200\n"
"PO-Revision-Date: 2013-08-09 12:49+0100\n"
"Last-Translator: Werner Baumann <werner.baumann@onlinehome.de>\n"
"Language-Team: \n"
"Language: de\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: src/cache.c:662
#: src/cache.c:656
#, 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:667
#: src/cache.c:661
#, c-format
msgid "Last try succeeded.\n"
msgstr "Der letzte Versuch war erfolgreich.\n"

#: src/cache.c:670
#: src/cache.c:664
#, 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:673
#: src/cache.c:667
#, c-format
msgid ""
"Mounting failed.\n"
@ -49,22 +49,22 @@ msgstr ""
"das Einhängen schlug fehl;\n"
"%s"

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

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

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

#: src/cache.c:943
#: src/cache.c:925
#, c-format
msgid ""
"File %s exists on the server but should not. Maybe it is an error in the "
@ -74,191 +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:2565 src/cache.c:2598
#: src/cache.c:2512 src/cache.c:2545
#, c-format
msgid "can't create cache file %s"
msgstr "kann die Cachedatei %s nicht erzeugen"

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

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

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

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

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

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

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

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

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

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

#: src/cache.c:2971
#: src/cache.c:2913
#, 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/dav_coda.c:173 src/dav_fuse.c:173
msgid "can't allocate message buffer"
msgstr "kein Speicher für den Nachrichtenpuffer verfügbar"

#: src/kernel_interface.c:114
#, c-format
msgid "trying fuse kernel file system"
msgstr "ich versuche es mit dem Kernel-Dateisystem fuse"

#: src/kernel_interface.c:121
#, c-format
msgid "fuse device opened successfully"
msgstr "fuse-Gerätedatei erfolgreich geöffnet"

#: src/kernel_interface.c:133
#, c-format
msgid "trying coda kernel file system"
msgstr "ich versuche es mit dem Kernel-Dateisystem coda"

#: src/kernel_interface.c:137
#, c-format
msgid "coda device opened successfully"
msgstr "coda-Gerätedatei erfolgreich geöffnet"

#: src/kernel_interface.c:145
#, c-format
msgid "unknown kernel file system %s"
msgstr "das Kernel-Dateisystem %s ist unbekannt"

#: src/kernel_interface.c:189
#, c-format
msgid "no free coda device to mount"
msgstr "keine freie coda-Gerätedatei gefunden"

#: src/kernel_interface.c:198
#, c-format
msgid "CODA_KERNEL_VERSION %u not supported"
msgstr "CODA_KERNEL_VERSION %u wird nicht unterstützt"

#: src/kernel_interface.c:235
#: 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:259
#: src/kernel_interface.c:217
#, c-format
msgid "can't mount using fuse kernel file system"
msgstr ""
"mit Kernel-Dateisystem fuse kann das Dateisystem nicht eingehängt werden"
msgid "mounting failed"
msgstr "das Aushängen schlug fehl"

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

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

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

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

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

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

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

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

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

#: src/mount_davfs.c:487 src/mount_davfs.c:581 src/mount_davfs.c:607
#: src/mount_davfs.c:612 src/mount_davfs.c:620
#: 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
#, c-format
msgid "can't access directory %s"
msgstr "Zugriff auf das Verzeichnis %s verweigert"

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

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

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

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

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

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

#: src/mount_davfs.c:665
#: src/mount_davfs.c:655
#, c-format
msgid ""
"found PID file %s.\n"
@ -269,99 +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:709
#: src/mount_davfs.c:697
#, c-format
msgid "no entry for %s found in %s"
msgstr "für %s ist kein Eintrag in %s"

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

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

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

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

#: src/mount_davfs.c:737
#: src/mount_davfs.c:725
#, 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:740
#: src/mount_davfs.c:728
#, c-format
msgid "different mount options in %s"
msgstr "in %s sind andere Mount-Optionen angegeben"

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

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

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

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

#: src/mount_davfs.c:770
#: src/mount_davfs.c:757
#, 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:782
#: src/mount_davfs.c:769
#, 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:793
#: src/mount_davfs.c:780
#, 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:814
#, c-format
msgid "can't mount %s on %s"
msgstr "kann %s nicht auf %s einhängen"

#: src/mount_davfs.c:816
#, c-format
msgid "kernel does not know file system %s"
msgstr "der Kernel kenn das Dateisystem %s nicht"

#: src/mount_davfs.c:818
#, c-format
msgid "mount point is busy"
msgstr "das Einhängepunkt wird anderweitig benutzt"

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

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

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

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

#: src/mount_davfs.c:946
#: src/mount_davfs.c:882
#, 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:949 src/umount_davfs.c:125
#: src/mount_davfs.c:885 src/umount_davfs.c:125
#, c-format
msgid "too many arguments"
msgstr "zu viele Argumente"

#: src/mount_davfs.c:956
#: src/mount_davfs.c:892
#, 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:961
#: src/mount_davfs.c:897
#, c-format
msgid "no WebDAV-server specified"
msgstr "es wurde kein WebDAV-Server angegeben"

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

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

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

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

#: src/mount_davfs.c:1099 src/webdav.c:432
#, c-format
msgid "can't read client certificate %s"
msgstr "kann das Client-Zertifikat %s nicht lesen"

#: src/mount_davfs.c:1104
#, 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:1110
#, 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:1153
#: src/mount_davfs.c:1004
#, c-format
msgid "program is not setuid root"
msgstr "die Programmdatei hat das setuid-Bit nicht gesetzt"

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

#: src/mount_davfs.c:1201 src/mount_davfs.c:1214 src/mount_davfs.c:1216
#: src/mount_davfs.c:1234 src/mount_davfs.c:1236 src/webdav.c:439
#: 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
msgid "Password: "
msgstr "Passwort:"

#: src/mount_davfs.c:1205
#: src/mount_davfs.c:1053
#, c-format
msgid ""
"Please enter the username to authenticate with proxy\n"
@ -465,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:1207 src/mount_davfs.c:1227
#: src/mount_davfs.c:1055 src/mount_davfs.c:1075
msgid "Username:"
msgstr "Benutzername:"

#: src/mount_davfs.c:1211
#: src/mount_davfs.c:1059
#, c-format
msgid ""
"Please enter the password to authenticate user %s with proxy\n"
@ -478,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:1225
#: src/mount_davfs.c:1073
#, c-format
msgid ""
"Please enter the username to authenticate with server\n"
@ -487,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:1231
#: src/mount_davfs.c:1079
#, c-format
msgid ""
"Please enter the password to authenticate user %s with server\n"
@ -496,12 +422,26 @@ 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:1303
#: src/mount_davfs.c:1097
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
"certificate %s.\n"
msgstr ""
"Gib bitte das Passwort für die Entschlüsselung des\n"
"Client-Zertifikats %s ein.\n"

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

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

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

#: src/mount_davfs.c:1369
#: src/mount_davfs.c:1232
#, 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:1372
#: src/mount_davfs.c:1235
#, 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:1375
#: src/mount_davfs.c:1238
#, 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:1652
#: src/mount_davfs.c:1513
#, c-format
msgid "option %s requires argument"
msgstr "die Option %s verlangt ein Argument"

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

#: src/mount_davfs.c:2100 src/mount_davfs.c:2330
#: src/mount_davfs.c:1976
#, 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
#, c-format
msgid "can't read client certificate %s"
msgstr "kann das Client-Zertifikat %s nicht lesen"

#: src/mount_davfs.c:2012
#, 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
#, 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
#, c-format
msgid "opening %s failed"
msgstr "konnte %s nicht öffnen"

#: src/mount_davfs.c:2121 src/mount_davfs.c:2166 src/mount_davfs.c:2258
#: src/mount_davfs.c:2346 src/mount_davfs.c:2413
#: 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
#, c-format
msgid "malformed line"
msgstr "Syntaxfehler in der Zeile"

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

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

#: src/mount_davfs.c:2549
#: src/mount_davfs.c:2500
#, c-format
msgid ""
"To mount a WebDAV-resource don't call %s directly, but use\n"
@ -572,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:2551
#: src/mount_davfs.c:2502
#, c-format
msgid ""
" mount <mountpoint> : or\n"
@ -583,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:2554
#: src/mount_davfs.c:2505
#, c-format
msgid ""
" mount -t davfs <server-url> <mountpoint> [-o options]\n"
@ -600,7 +564,7 @@ msgstr ""
" Kommas unterteilte Liste von Optionen.\n"
"\n"

#: src/mount_davfs.c:2559
#: src/mount_davfs.c:2510
#, c-format
msgid ""
"Recognised options:\n"
@ -617,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:2565
#: src/mount_davfs.c:2516
#, c-format
msgid ""
" ro : mount read-only\n"
@ -735,95 +699,81 @@ msgstr "kann die Ausgabe für neon-Log-Meldungen nicht öffnen"
msgid "neon library does not support TLS/SSL"
msgstr "die Neon-Bibliothek uterstützt TLS/SSL nicht"

#: src/webdav.c:437
#, c-format
msgid ""
"Please enter the password to decrypt client\n"
"certificate %s.\n"
msgstr ""
"Gib bitte das Passwort für die Entschlüsselung des\n"
"Client-Zertifikats %s ein.\n"

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

#: src/webdav.c:505 src/webdav.c:508
#: src/webdav.c:475 src/webdav.c:478
#, 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:516
#: src/webdav.c:486
#, c-format
msgid "warning: the server does not support locks"
msgstr "Warnung: der Server kann Dateien nicht sperren"

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

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

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

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

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

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

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

#: src/webdav.c:1979 src/webdav.c:2015
#: src/webdav.c:1949 src/webdav.c:1985
#, 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:1983 src/webdav.c:2021
#: src/webdav.c:1953 src/webdav.c:1991
#, c-format
msgid "unknown certificate error"
msgstr "Fehler beim Analysieren des Server-Zertifikats"

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

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

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

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

#: src/webdav.c:1992
#: src/webdav.c:1962
#, c-format
msgid ""
"You only should accept this certificate, if you can\n"
@ -834,26 +784,28 @@ 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:1995
#: src/webdav.c:1965
#, c-format
msgid "Accept certificate for this session? [y,N] "
msgstr "Ich akzeptiere das Zertifikat für diese Sitzung [j,N]: "

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

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

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

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



View File

@ -26,9 +26,9 @@ pkgsyscachedir = $(dav_syscachedir)/@PACKAGE@
ssbindir = @ssbindir@

sbin_PROGRAMS = mount.davfs umount.davfs
mount_davfs_SOURCES = cache.c dav_coda.c \
dav_fuse.c kernel_interface.c mount_davfs.c webdav.c \
cache.h coda.h defaults.h fuse_kernel.h \
mount_davfs_SOURCES = cache.c \
kernel_interface.c mount_davfs.c webdav.c \
cache.h defaults.h fuse_kernel.h \
kernel_interface.h mount_davfs.h webdav.h
umount_davfs_SOURCES = umount_davfs.c defaults.h


View File

@ -223,11 +223,6 @@ static off_t write_dir_entry_dummy(int fd, off_t off, const dav_node *node,
}
static dav_write_dir_entry_fn write_dir_entry = write_dir_entry_dummy;

/* Points to a flag in the kernel interface module. If set to 1, at the end of
the upcall the kernel dentries will be flushed. */
static int flush_dummy;
static int *flush = &flush_dummy;

/* Whether to create debug messages. */
static int debug;

@ -365,7 +360,7 @@ get_child(const dav_node *parent, const char *name)
}

static dav_handle *
get_file_handle(dav_node * node, int fd, int accmode, pid_t pid, pid_t pgid);
get_file_handle(dav_node * node, int fd);

static int
has_permission(const dav_node *node, uid_t uid, int how);
@ -473,8 +468,7 @@ set_cache_file_times(dav_node *node)
}

static int
open_file(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid,
uid_t uid);
open_file(int *fd, dav_node *node, int flags);

static int
update_cache_file(dav_node *node);
@ -685,7 +679,6 @@ dav_close_cache(int got_sigterm)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Closing cache");

write_dir_entry = &write_dir_entry_dummy;
flush = &flush_dummy;

clean_tree(root, !got_sigterm);

@ -725,18 +718,11 @@ dav_close_cache(int got_sigterm)


size_t
dav_register_kernel_interface(dav_write_dir_entry_fn write_fn, int *flush_flag,
unsigned int *blksize)
dav_register_kernel_interface(dav_write_dir_entry_fn write_fn)
{
if (write_fn)
write_dir_entry = write_fn;

if (flush_flag)
flush = flush_flag;

if (blksize)
*blksize = fs_stat->bsize;

return alignment;
}

@ -797,7 +783,6 @@ dav_tidy_cache(void)
delete_cache_file(node->parent);
node->parent->utime = 0;
remove_node(node);
*flush = 1;
}
}
} else if (is_locked(node) && !is_dirty(node) && !is_created(node)
@ -842,9 +827,7 @@ dav_close(dav_node *node, int fd, int flags, pid_t pid, pid_t pgid)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " close %s", node->path);

dav_handle *fh = get_file_handle(node, fd,
is_dir(node) ? O_RDWR : flags & O_ACCMODE,
pid, pgid);
dav_handle *fh = get_file_handle(node, fd);
if (!fh)
return EBADF;

@ -853,7 +836,6 @@ dav_close(dav_node *node, int fd, int flags, pid_t pid, pid_t pgid)
if (!node->parent && node != root && !is_open(node)) {
remove_from_table(node);
delete_node(node);
*flush = 1;
return 0;
}

@ -894,7 +876,6 @@ dav_close(dav_node *node, int fd, int flags, pid_t pid, pid_t pgid)
delete_cache_file(node->parent);
node->parent->utime = 0;
remove_node(node);
*flush = 1;
}
}
}
@ -953,7 +934,6 @@ dav_create(dav_node **nodep, dav_node *parent, const char *name, uid_t uid,
&(*nodep)->mime_type);
(*nodep)->utime = (*nodep)->smtime;
delete_cache_file(parent);
*flush = 1;
parent->mtime = (*nodep)->mtime;
parent->ctime = (*nodep)->mtime;
add_to_changed(*nodep);
@ -1117,7 +1097,6 @@ dav_mkdir(dav_node **nodep, dav_node *parent, const char *name, uid_t uid,
(*nodep)->smtime = (*nodep)->mtime;
(*nodep)->utime = (*nodep)->mtime;
delete_cache_file(parent);
*flush = 1;
parent->mtime = (*nodep)->mtime;
parent->ctime = (*nodep)->mtime;
} else {
@ -1129,8 +1108,7 @@ dav_mkdir(dav_node **nodep, dav_node *parent, const char *name, uid_t uid,


int
dav_open(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid,
int open_create)
dav_open(int *fd, dav_node *node, int flags, uid_t uid, int open_create)
{
if (!is_valid(node))
return ENOENT;
@ -1157,7 +1135,7 @@ dav_open(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid,
if (create_dir_cache_file(node) != 0)
return EIO;
node->atime = time(NULL);
return open_file(fd, node, O_RDWR, pid, pgid, uid);
return open_file(fd, node, O_RDWR);
}

int ret = 0;
@ -1165,7 +1143,7 @@ dav_open(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid,

ret = update_cache_file(node);
if (!ret)
ret = open_file(fd, node, flags & O_ACCMODE, pid, pgid, uid);
ret = open_file(fd, node, flags & O_ACCMODE);

} else {

@ -1177,14 +1155,12 @@ dav_open(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid,
ret = create_cache_file(node);
if (!ret) {
ret = open_file(fd, node,
flags & (O_ACCMODE | O_TRUNC | O_APPEND),
pid, pgid, uid);
flags & (O_ACCMODE | O_TRUNC | O_APPEND));
}
} else if (!ret) {
ret = update_cache_file(node);
if (!ret)
ret = open_file(fd, node, flags & (O_ACCMODE | O_APPEND),
pid, pgid, uid);
ret = open_file(fd, node, flags & (O_ACCMODE | O_APPEND));
}
if (!ret)
@ -1202,7 +1178,7 @@ dav_read(ssize_t *len, dav_node * node, int fd, char *buf, size_t size,
if (!exists(node))
return ENOENT;

dav_handle *fh = get_file_handle(node, fd, 0, 0, 0);
dav_handle *fh = get_file_handle(node, fd);
if (!fh)
return EBADF;
if (fh->flags == O_WRONLY)
@ -1247,7 +1223,6 @@ dav_remove(dav_node *parent, const char *name, uid_t uid)
if (!node) {
delete_cache_file(parent);
parent->utime = 0;
*flush = 1;
return ENOENT;
}
if (is_dir(node))
@ -1277,7 +1252,6 @@ dav_remove(dav_node *parent, const char *name, uid_t uid)
delete_cache_file(parent);
parent->mtime = time(NULL);
parent->ctime = parent->mtime;
*flush = 1;

return 0;
}
@ -1309,7 +1283,6 @@ dav_rename(dav_node *src_parent, const char *src_name, dav_node *dst_parent,
if (!src) {
delete_cache_file(src_parent);
src_parent->utime = 0;
*flush = 1;
return ENOENT;
}
if (src == backup || (dst && is_backup(dst)))
@ -1341,7 +1314,6 @@ dav_rename(dav_node *src_parent, const char *src_name, dav_node *dst_parent,
delete_cache_file(dst_parent);
dst_parent->mtime = time(NULL);
dst_parent->ctime = dst_parent->mtime;
*flush = 1;
}

return ret;
@ -1366,7 +1338,6 @@ dav_rmdir(dav_node *parent, const char *name, uid_t uid)
if (!node) {
delete_cache_file(parent);
parent->utime = 0;
*flush = 1;
return ENOENT;
}
if (node == backup)
@ -1382,7 +1353,6 @@ dav_rmdir(dav_node *parent, const char *name, uid_t uid)
delete_cache_file(parent);
parent->mtime = time(NULL);
parent->ctime = parent->mtime;
*flush = 1;
}

return ret;
@ -1595,7 +1565,7 @@ dav_write(size_t *written, dav_node * node, int fd, char *buf, size_t size,
if (is_dir(node))
return EBADF;

dav_handle *fh = get_file_handle(node, fd, 0, 0, 0);
dav_handle *fh = get_file_handle(node, fd);
if (!fh)
return EBADF;
if (fh->flags == O_RDONLY)
@ -1722,7 +1692,6 @@ backup_node(dav_node *orig)
delete_cache_file(backup);
backup->mtime = time(NULL);
backup->ctime = backup->mtime;
*flush = 1;
}


@ -2185,8 +2154,7 @@ remove_node(dav_node *node)
function will do nothing.
utime and retry will be updated.
If the contents or the mtime of the dir has changed, the dir-cache-file
will be deleted and the flush flag will be set to force new lookups
by the kernel. */
will be deleted. */
static int
update_directory(dav_node *dir, time_t refresh)
{
@ -2252,7 +2220,6 @@ update_directory(dav_node *dir, time_t refresh)

if (changed) {
delete_cache_file(dir);
*flush = 1;
}

if (debug) {
@ -2268,8 +2235,6 @@ update_directory(dav_node *dir, time_t refresh)
If props is incompatibel with node or indicates a lost update problem,
a new node is created from props and the old node is deleted, creating
a local back up if necessary.
If nodes are removed or created, flag flush is set, to force new lookups
by the kernel.
node : The node to be updated. It must not be the root node and have a
valid parent.
props : The properties retrieved from the server. They will be freed.
@ -2294,7 +2259,6 @@ update_node(dav_node *node, dav_props *props)
|| (!is_dir(node) && props->is_dir)) {
add_node(node->parent, props);
remove_node(node);
*flush = 1;
return 1;
}

@ -2302,14 +2266,12 @@ update_node(dav_node *node, dav_props *props)
free(node->name);
node->name = xstrdup(props->name);
ret = 1;
*flush = 1;
}

if (is_created(node)) {
if (!is_open(node) && (props->size > 0)) {
add_node(node->parent, props);
remove_node(node);
*flush = 1;
return 1;
} else {
dav_delete_props(props);
@ -2328,11 +2290,9 @@ update_node(dav_node *node, dav_props *props)
} else if (is_dirty(node)) {
add_node(node->parent, props);
remove_node(node);
*flush = 1;
return 1;
} else {
delete_cache_file(node);
*flush = 1;
}
} else {
node->utime = time(NULL);
@ -2348,7 +2308,6 @@ update_node(dav_node *node, dav_props *props)
node->smtime = props->mtime;
node->utime = 0;
delete_cache_file(node);
*flush = 1;
}
if (props->ctime > node->ctime)
node->ctime = props->ctime;
@ -2365,15 +2324,12 @@ update_node(dav_node *node, dav_props *props)
node->mode |= (node->mode & S_IWGRP) ? S_IXGRP : 0;
node->mode |= (node->mode & S_IWOTH) ? S_IXOTH : 0;
node->mode &= ~file_umask;
*flush = 1;
} else if (props->is_exec == 0
&& (node->mode & (S_IXUSR | S_IXGRP | S_IXOTH))) {
node->mode &= ~(S_IXUSR | S_IXGRP | S_IXOTH);
*flush = 1;
}
if (props->size && props->size != node->size) {
node->size = props->size;
*flush = 1;
}
}

@ -2399,7 +2355,6 @@ update_path(dav_node *node, const char *src_path, const char *dst_path)
if (!node->path || strstr(node->path, src_path) != node->path) {
delete_cache_file(node->parent);
node->parent->utime = 0;
*flush = 1;
return;
}

@ -2422,28 +2377,17 @@ exists(const dav_node *node)
if (n) {
return 1;
} else {
*flush = 1;
return 0;
}
}


static dav_handle *
get_file_handle(dav_node * node, int fd, int accmode, pid_t pid, pid_t pgid)
get_file_handle(dav_node * node, int fd)
{
dav_handle *fh = node->handles;
if (fd) {
while (fh && fh->fd != fd)
fh = fh->next;
} else {
while (fh && (fh->flags != accmode || fh->pid != pid))
fh = fh->next;
if (!fh) {
fh = node->handles;
while (fh && (fh->flags != accmode || fh->pgid != pgid))
fh = fh->next;
}
}
while (fh && fh->fd != fd)
fh = fh->next;

return fh;
}
@ -2627,7 +2571,7 @@ create_dir_cache_file(dav_node *dir)
of handles.
return value : 0 on success, EIO if the file could not be opend. */
static int
open_file(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid)
open_file(int *fd, dav_node *node, int flags)
{
*fd = open(node->cache_path, flags, node->mode);
if (*fd <= 0)
@ -2635,9 +2579,6 @@ open_file(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid)
dav_handle *fh = (dav_handle *) xmalloc(sizeof(dav_handle));
fh->fd = *fd;
fh->flags = O_ACCMODE & flags;
fh->pid = pid;
fh->pgid = pgid;
fh->uid = uid;
fh->next = node->handles;
node->handles = fh;
if ((O_ACCMODE & flags) == O_WRONLY || (O_ACCMODE & flags) == O_RDWR)
@ -2683,7 +2624,6 @@ update_cache_file(dav_node *node)
|| ret == EPERM || ret == ENOSPC) {
delete_cache_file(node->parent);
node->parent->utime = 0;
*flush = 1;
remove_node(node);
ret = EIO;
}
@ -2735,7 +2675,6 @@ update_cache_file(dav_node *node)
if (ret == ENOENT) {
delete_cache_file(node->parent);
node->parent->utime = 0;
*flush = 1;
remove_node(node);
}
delete_cache_file(node);

View File

@ -33,17 +33,12 @@
/*============*/

/* File descriptors for open files are stored within a dav_node in a linked
list. As coda does not return the file descriptor when closing a file,
this data structure contains additional information to identify the
appropriate file descriptor. */
list. */
typedef struct dav_handle dav_handle;
struct dav_handle {
dav_handle *next; /* Next in the list. */
int fd; /* File descriptor of the open file. */
int flags; /* Access mode flags only. */
pid_t pid; /* id of requesting process. */
pid_t pgid; /* Group id of requesting process. */
uid_t uid; /* User id of requesting process. */
};


@ -207,11 +202,9 @@ dav_close_cache(int got_sigterm);

/* Registers the kernel_interface.
Sets pointers to the write_dir_entry_fn flush_flag.
If blksize is not NULL, the preferred bloksize for IO is asigned.
It returns the value of alignment. */
size_t
dav_register_kernel_interface(dav_write_dir_entry_fn write_fn, int *flush_flag,
unsigned int *blksize);
dav_register_kernel_interface(dav_write_dir_entry_fn write_fn);


/* Scans the hash table for file nodes to be saved them back on the server,
@ -333,8 +326,7 @@ dav_mkdir(dav_node **nodep, dav_node *parent, const char *name, uid_t uid,


/* Opens file or directory node according to flags and returns file descriptor
fd. fd, together with pid, pgid and uid, is stored in node for read, write
and close operations.
fd. fd is stored in node for read, write and close operations.
Only the O_ACCESSMOE, O_APPEND and O_TRUNC bits in flags will be honoured.
O_CREATE and O_EXCL are not allowed.
Permissions:
@ -346,8 +338,7 @@ dav_mkdir(dav_node **nodep, dav_node *parent, const char *name, uid_t uid,
O_CREATE. It allows dav_open to succeed if when the file mode would not
allow this. */
int
dav_open(int *fd, dav_node *node, int flags, pid_t pid, pid_t pgid, uid_t uid,
int open_create);
dav_open(int *fd, dav_node *node, int flags, uid_t uid, int open_create);

/* Reads size bytes from file descriptor fd, starting at position offset
and copies them into buf.

View File

@ -1,643 +0,0 @@
/* This header file was taken from Linux kernel 2.6.18.
From the two alternative licences the Carnegie Mellon University
specific licence has been chosen.
Definitions intended for use by the kernel and not for userspace,
old API definitions and other parts unused by davfs2 have been removed.
Modifications by Werner Baumann, 2009-04-14. */


/*

Coda: an Experimental Distributed File System
Release 4.0

Copyright (c) 1987-1999 Carnegie Mellon University
All Rights Reserved

Permission to use, copy, modify and distribute this software and its
documentation is hereby granted, provided that both the copyright
notice and this permission notice appear in all copies of the
software, derivative works or modified versions, and any portions
thereof, and that both notices appear in supporting documentation, and
that credit is given to Carnegie Mellon University in all documents
and publicity pertaining to direct or indirect use of this code or its
derivatives.

CODA IS AN EXPERIMENTAL SOFTWARE SYSTEM AND IS KNOWN TO HAVE BUGS,
SOME OF WHICH MAY HAVE SERIOUS CONSEQUENCES. CARNEGIE MELLON ALLOWS
FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION. CARNEGIE MELLON
DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER
RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE OR OF
ANY DERIVATIVE WORK.

Carnegie Mellon encourages users of this software to return any
improvements or extensions that they make, and to grant Carnegie
Mellon the rights to redistribute these changes without encumbrance.
*/

/*
*
* Based on cfs.h from Mach, but revamped for increased simplicity.
* Linux modifications by
* Peter Braam, Aug 1996
*/

#ifndef _CODA_HEADER_
#define _CODA_HEADER_

#define cdev_t dev_t

#ifndef __BIT_TYPES_DEFINED__
#define __BIT_TYPES_DEFINED__
typedef signed char int8_t;
typedef unsigned char u_int8_t;
typedef short int16_t;
typedef unsigned short u_int16_t;
typedef int int32_t;
typedef unsigned int u_int32_t;
#endif


/*
* Cfs constants
*/
#define CODA_MAXNAMLEN 255
#define CODA_MAXPATHLEN 1024
#define CODA_MAXSYMLINK 10

/* these are Coda's version of O_RDONLY etc combinations
* to deal with VFS open modes
*/
#define C_O_READ 0x001
#define C_O_WRITE 0x002
#define C_O_TRUNC 0x010
#define C_O_EXCL 0x100
#define C_O_CREAT 0x200

/* these are to find mode bits in Venus */
#define C_M_READ 00400
#define C_M_WRITE 00200

/* for access Venus will use */
#define C_A_C_OK 8 /* Test for writing upon create. */
#define C_A_R_OK 4 /* Test for read permission. */
#define C_A_W_OK 2 /* Test for write permission. */
#define C_A_X_OK 1 /* Test for execute permission. */
#define C_A_F_OK 0 /* Test for existence. */



#ifndef _VENUS_DIRENT_T_
#define _VENUS_DIRENT_T_ 1
struct venus_dirent {
u_int32_t d_fileno; /* file number of entry */
u_int16_t d_reclen; /* length of this record */
u_int8_t d_type; /* file type, see below */
u_int8_t d_namlen; /* length of string in d_name */
char d_name[CODA_MAXNAMLEN + 1];/* name must be no longer than this */
};
#undef DIRSIZ
#define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) + \
(((dp)->d_namlen+1 + 3) &~ 3))

/*
* File types
*/
#define CDT_UNKNOWN 0
#define CDT_FIFO 1
#define CDT_CHR 2
#define CDT_DIR 4
#define CDT_BLK 6
#define CDT_REG 8
#define CDT_LNK 10
#define CDT_SOCK 12
#define CDT_WHT 14

/*
* Convert between stat structure types and directory types.
*/
#define IFTOCDT(mode) (((mode) & 0170000) >> 12)
#define CDTTOIF(dirtype) ((dirtype) << 12)

#endif


#ifndef _VUID_T_
#define _VUID_T_
typedef u_int32_t vuid_t;
typedef u_int32_t vgid_t;
#endif /*_VUID_T_ */

struct CodaFid {
u_int32_t opaque[4];
};

#define coda_f2i(fid)\
(fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)


#ifndef _VENUS_VATTR_T_
#define _VENUS_VATTR_T_
/*
* Vnode types. VNON means no type.
*/
enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };

struct coda_vattr {
long va_type; /* vnode type (for create) */
u_short va_mode; /* files access mode and type */
short va_nlink; /* number of references to file */
vuid_t va_uid; /* owner user id */
vgid_t va_gid; /* owner group id */
long va_fileid; /* file id */
u_quad_t va_size; /* file size in bytes */
long va_blocksize; /* blocksize preferred for i/o */
struct timespec va_atime; /* time of last access */
struct timespec va_mtime; /* time of last modification */
struct timespec va_ctime; /* time file changed */
u_long va_gen; /* generation number of file */
u_long va_flags; /* flags defined for file */
cdev_t va_rdev; /* device special file represents */
u_quad_t va_bytes; /* bytes of disk space held by file */
u_quad_t va_filerev; /* file modification number */
};

#endif

/* structure used by CODA_STATFS for getting cache information from venus */
struct coda_statfs {
int32_t f_blocks;
int32_t f_bfree;
int32_t f_bavail;
int32_t f_files;
int32_t f_ffree;
};

/*
* Kernel <--> Venus communications.
*/

#define CODA_ROOT 2
#define CODA_OPEN_BY_FD 3
#define CODA_OPEN 4
#define CODA_CLOSE 5
#define CODA_IOCTL 6
#define CODA_GETATTR 7
#define CODA_SETATTR 8
#define CODA_ACCESS 9
#define CODA_LOOKUP 10
#define CODA_CREATE 11
#define CODA_REMOVE 12
#define CODA_LINK 13
#define CODA_RENAME 14
#define CODA_MKDIR 15
#define CODA_RMDIR 16
#define CODA_SYMLINK 18
#define CODA_READLINK 19
#define CODA_FSYNC 20
#define CODA_VGET 22
#define CODA_SIGNAL 23
#define CODA_REPLACE 24 /* DOWNCALL */
#define CODA_FLUSH 25 /* DOWNCALL */
#define CODA_PURGEUSER 26 /* DOWNCALL */
#define CODA_ZAPFILE 27 /* DOWNCALL */
#define CODA_ZAPDIR 28 /* DOWNCALL */
#define CODA_PURGEFID 30 /* DOWNCALL */
#define CODA_OPEN_BY_PATH 31
#define CODA_RESOLVE 32
#define CODA_REINTEGRATE 33
#define CODA_STATFS 34
#define CODA_STORE 35
#define CODA_RELEASE 36
#define CODA_NCALLS 37

#define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)

#define VC_MAXDATASIZE 8192
#define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) +\
VC_MAXDATASIZE

#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)

#define CODA_KERNEL_VERSION 3 /* 128-bit file identifiers */


/*
* Venus <-> Coda RPC arguments
*/
struct coda_in_hdr {
u_int32_t opcode;
u_int32_t unique; /* Keep multiple outstanding msgs distinct */
pid_t pid;
pid_t pgid;
vuid_t uid;
};

/* Really important that opcode and unique are 1st two fields! */
struct coda_out_hdr {
u_int32_t opcode;
u_int32_t unique;
u_int32_t result;
};

/* coda_root: NO_IN */
struct coda_root_out {
struct coda_out_hdr oh;
struct CodaFid VFid;
};

struct coda_root_in {
struct coda_in_hdr in;
};

/* coda_open: */
struct coda_open_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_open_out {
struct coda_out_hdr oh;
cdev_t dev;
ino_t inode;
};


/* coda_store: */
struct coda_store_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_store_out {
struct coda_out_hdr out;
};

/* coda_release: */
struct coda_release_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_release_out {
struct coda_out_hdr out;
};

/* coda_close: */
struct coda_close_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_close_out {
struct coda_out_hdr out;
};

/* coda_ioctl: */
struct coda_ioctl_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int cmd;
int len;
int rwflag;
char *data; /* Place holder for data. */
};

struct coda_ioctl_out {
struct coda_out_hdr oh;
int len;
caddr_t data; /* Place holder for data. */
};


/* coda_getattr: */
struct coda_getattr_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
};

struct coda_getattr_out {
struct coda_out_hdr oh;
struct coda_vattr attr;
};


/* coda_setattr: NO_OUT */
struct coda_setattr_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
struct coda_vattr attr;
};

struct coda_setattr_out {
struct coda_out_hdr out;
};

/* coda_access: NO_OUT */
struct coda_access_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_access_out {
struct coda_out_hdr out;
};


/* lookup flags */
#define CLU_CASE_SENSITIVE 0x01
#define CLU_CASE_INSENSITIVE 0x02

/* coda_lookup: */
struct coda_lookup_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int name; /* Place holder for data. */
int flags;
};

struct coda_lookup_out {
struct coda_out_hdr oh;
struct CodaFid VFid;
int vtype;
};


/* coda_create: */
struct coda_create_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
struct coda_vattr attr;
int excl;
int mode;
int name; /* Place holder for data. */
};

struct coda_create_out {
struct coda_out_hdr oh;
struct CodaFid VFid;
struct coda_vattr attr;
};


/* coda_remove: NO_OUT */
struct coda_remove_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int name; /* Place holder for data. */
};

struct coda_remove_out {
struct coda_out_hdr out;
};

/* coda_link: NO_OUT */
struct coda_link_in {
struct coda_in_hdr ih;
struct CodaFid sourceFid; /* cnode to link *to* */
struct CodaFid destFid; /* Directory in which to place link */
int tname; /* Place holder for data. */
};

struct coda_link_out {
struct coda_out_hdr out;
};


/* coda_rename: NO_OUT */
struct coda_rename_in {
struct coda_in_hdr ih;
struct CodaFid sourceFid;
int srcname;
struct CodaFid destFid;
int destname;
};

struct coda_rename_out {
struct coda_out_hdr out;
};

/* coda_mkdir: */
struct coda_mkdir_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
struct coda_vattr attr;
int name; /* Place holder for data. */
};

struct coda_mkdir_out {
struct coda_out_hdr oh;
struct CodaFid VFid;
struct coda_vattr attr;
};


/* coda_rmdir: NO_OUT */
struct coda_rmdir_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int name; /* Place holder for data. */
};

struct coda_rmdir_out {
struct coda_out_hdr out;
};

/* coda_symlink: NO_OUT */
struct coda_symlink_in {
struct coda_in_hdr ih;
struct CodaFid VFid; /* Directory to put symlink in */
int srcname;
struct coda_vattr attr;
int tname;
};

struct coda_symlink_out {
struct coda_out_hdr out;
};

/* coda_readlink: */
struct coda_readlink_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
};

struct coda_readlink_out {
struct coda_out_hdr oh;
int count;
caddr_t data; /* Place holder for data. */
};


/* coda_fsync: NO_OUT */
struct coda_fsync_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
};

struct coda_fsync_out {
struct coda_out_hdr out;
};

/* coda_vget: */
struct coda_vget_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
};

struct coda_vget_out {
struct coda_out_hdr oh;
struct CodaFid VFid;
int vtype;
};


/* CODA_SIGNAL is out-of-band, doesn't need data. */
/* CODA_INVALIDATE is a venus->kernel call */
/* CODA_FLUSH is a venus->kernel call */

/* coda_purgeuser: */
/* CODA_PURGEUSER is a venus->kernel call */
struct coda_purgeuser_out {
struct coda_out_hdr oh;
vuid_t uid;
};

/* coda_zapfile: */
/* CODA_ZAPFILE is a venus->kernel call */
struct coda_zapfile_out {
struct coda_out_hdr oh;
struct CodaFid CodaFid;
};

/* coda_zapdir: */
/* CODA_ZAPDIR is a venus->kernel call */
struct coda_zapdir_out {
struct coda_out_hdr oh;
struct CodaFid CodaFid;
};

/* coda_purgefid: */
/* CODA_PURGEFID is a venus->kernel call */
struct coda_purgefid_out {
struct coda_out_hdr oh;
struct CodaFid CodaFid;
};

/* coda_replace: */
/* CODA_REPLACE is a venus->kernel call */
struct coda_replace_out { /* coda_replace is a venus->kernel call */
struct coda_out_hdr oh;
struct CodaFid NewFid;
struct CodaFid OldFid;
};

/* coda_open_by_fd: */
struct coda_open_by_fd_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_open_by_fd_out {
struct coda_out_hdr oh;
int fd;
};

/* coda_open_by_path: */
struct coda_open_by_path_in {
struct coda_in_hdr ih;
struct CodaFid VFid;
int flags;
};

struct coda_open_by_path_out {
struct coda_out_hdr oh;
int path;
};

/* coda_statfs: NO_IN */
struct coda_statfs_in {
struct coda_in_hdr in;
};

struct coda_statfs_out {
struct coda_out_hdr oh;
struct coda_statfs stat;
};

union inputArgs {
struct coda_in_hdr ih; /* NB: every struct below begins with an ih */
struct coda_open_in coda_open;
struct coda_store_in coda_store;
struct coda_release_in coda_release;
struct coda_close_in coda_close;
struct coda_ioctl_in coda_ioctl;
struct coda_getattr_in coda_getattr;
struct coda_setattr_in coda_setattr;
struct coda_access_in coda_access;
struct coda_lookup_in coda_lookup;
struct coda_create_in coda_create;
struct coda_remove_in coda_remove;
struct coda_link_in coda_link;
struct coda_rename_in coda_rename;
struct coda_mkdir_in coda_mkdir;
struct coda_rmdir_in coda_rmdir;
struct coda_symlink_in coda_symlink;
struct coda_readlink_in coda_readlink;
struct coda_fsync_in coda_fsync;
struct coda_vget_in coda_vget;
struct coda_open_by_fd_in coda_open_by_fd;
struct coda_open_by_path_in coda_open_by_path;
struct coda_statfs_in coda_statfs;
};

union outputArgs {
struct coda_out_hdr oh; /* NB: every struct below begins with an oh */
struct coda_root_out coda_root;
struct coda_open_out coda_open;
struct coda_ioctl_out coda_ioctl;
struct coda_getattr_out coda_getattr;
struct coda_lookup_out coda_lookup;
struct coda_create_out coda_create;
struct coda_mkdir_out coda_mkdir;
struct coda_readlink_out coda_readlink;
struct coda_vget_out coda_vget;
struct coda_purgeuser_out coda_purgeuser;
struct coda_zapfile_out coda_zapfile;
struct coda_zapdir_out coda_zapdir;
struct coda_purgefid_out coda_purgefid;
struct coda_replace_out coda_replace;
struct coda_open_by_fd_out coda_open_by_fd;
struct coda_open_by_path_out coda_open_by_path;
struct coda_statfs_out coda_statfs;
};

union coda_downcalls {
/* CODA_INVALIDATE is a venus->kernel call */
/* CODA_FLUSH is a venus->kernel call */
struct coda_purgeuser_out purgeuser;
struct coda_zapfile_out zapfile;
struct coda_zapdir_out zapdir;
struct coda_purgefid_out purgefid;
struct coda_replace_out replace;
};


/* Data passed to mount */

#define CODA_MOUNT_VERSION 1

struct coda_mount_data {
int version;
int fd; /* Opened device */
};


#endif

View File

@ -1,824 +0,0 @@
/* dav_coda.c: interface to the Coda kernel module CODA_KERNEL_VERSION 3.
Copyright (C) 2006, 2007, 2008, 2009 Werner Baumann

This file is part of davfs2.

davfs2 is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

davfs2 is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with davfs2; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */


#include "config.h"

#include <errno.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#ifdef HAVE_LIBINTL_H
#include <libintl.h>
#endif
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
#ifdef HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifdef HAVE_STDINT_H
#include <stdint.h>
#endif
#include <stdio.h>
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#ifdef HAVE_SYSLOG_H
#include <syslog.h>
#endif
#include <time.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif

#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif

#include <ne_ssl.h>

#include "defaults.h"
#include "mount_davfs.h"
#include "cache.h"
#include "kernel_interface.h"
#include "coda.h"

#ifdef ENABLE_NLS
#define _(String) gettext(String)
#else
#define _(String) String
#endif


/* Constants */
/*===========*/

/* Size of buffer for communication with the kernel module. */
#define BUF_SIZE 2048

/* This constants are used by davfs2 to fill fields of struct CodaFid that
are not used by davfs2, but are expected by coda. */
#define DAV_VOL 0x01234567
#define DAV_VNODE 0xffffffff


/* Private global variables */
/*==========================*/

/* Buffer used for communication with the kernel module (in and out). */
static char *buf;

/* The preferred blocksize used by the local filesystem for cache files.
Used by set_attr(). */
static unsigned int blocksize;

/* Alignment boundary of dav_node in byte.
Used to compute file numbers from node pointers. */
static size_t alignment;

/* Send debug messages to syslog if != 0. */
int debug;


/* Private function prototypes */
/*=============================*/

/* Functions to handle upcalls fromthe kernel module. */

static uint32_t
coda_access(void);

static uint32_t
coda_close(void);

static uint32_t
coda_create(void);

static uint32_t
coda_getattr(void);

static uint32_t
coda_lookup(void);

static uint32_t
coda_mkdir(void);

static uint32_t
coda_open_by_fd(void);

static uint32_t
coda_root(void);

static uint32_t
coda_setattr(void);

static uint32_t
coda_statfs(void);

/* Functions that will do a downcall to the kernel module. */

static void
coda_flush(int device);

/* Auxiliary functions. */

static off_t
write_dir_entry(int fd, off_t off, const dav_node *node, const char *name);

static void
set_attr(struct coda_vattr *attr, const dav_node *node);


/* Public functions */
/*==================*/

void
dav_coda_loop(int device, size_t bufsize, time_t idle_time,
dav_is_mounted_fn is_mounted, volatile int *keep_on_running,
int dbg)
{
debug = dbg;
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "coda kernel version 3");

buf = malloc(BUF_SIZE);
if (!buf) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_ERR),
_("can't allocate message buffer"));
return;
}
static int flush = 0;
alignment = dav_register_kernel_interface(&write_dir_entry, &flush,
&blocksize);

struct timeval tv;
tv.tv_sec = idle_time;
tv.tv_usec = 0;
time_t last_tidy_cache = time(NULL);

while (*keep_on_running) {

fd_set fds;
FD_ZERO(&fds);
FD_SET(device, &fds);
int ret = select(device + 1, &fds, NULL, NULL, &tv);

if (ret > 0) {
ssize_t bytes_read = read(device, buf, BUF_SIZE);
if (bytes_read <= 0) {
if (bytes_read == 0 || errno == EINTR || errno == EAGAIN) {
if (time(NULL) < (last_tidy_cache + idle_time)) {
tv.tv_sec = last_tidy_cache + idle_time - time(NULL);
} else {
tv.tv_sec = 0;
}
continue;
}
break;
}
} else if (ret == 0) {
if (!is_mounted())
break;
if (dav_tidy_cache() == 0) {
tv.tv_sec = idle_time;
last_tidy_cache = time(NULL);
} else {
tv.tv_sec = 0;
}
continue;
} else {
break;
}

struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
uint32_t len;
switch (ih->opcode) {
case CODA_ROOT:
len = coda_root();
break;
case CODA_OPEN_BY_FD:
len = coda_open_by_fd();
break;
case CODA_OPEN:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_OPEN:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_CLOSE:
len = coda_close();
last_tidy_cache = 0;
break;
case CODA_IOCTL:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_IOCTL:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_GETATTR:
len = coda_getattr();
break;
case CODA_SETATTR:
len = coda_setattr();
break;
case CODA_ACCESS:
len = coda_access();
break;
case CODA_LOOKUP:
len = coda_lookup();
break;
case CODA_CREATE:
len = coda_create();
break;
case CODA_REMOVE: {
struct coda_remove_in *in = (struct coda_remove_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_REMOVE:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p %p, %s", node,
buf + in->name);
}
oh->result = dav_remove(node, buf + in->name, ih->uid);
len = sizeof(struct coda_out_hdr);
break; }
case CODA_LINK:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_LINK:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_RENAME: {
struct coda_rename_in *in = (struct coda_rename_in *) buf;
dav_node *src = *((dav_node **) &(in->sourceFid.opaque[2]));
dav_node *dst = *((dav_node **) &(in->destFid.opaque[2]));
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_RENAME:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " sp %p, %s", src,
buf + in->srcname);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " dp %p, %s", dst,
buf + in->destname);
}
oh->result = dav_rename(src, buf + in->srcname, dst,
buf + in->destname, ih->uid);
len = sizeof(struct coda_out_hdr);
break; }
case CODA_MKDIR:
len = coda_mkdir();
break;
case CODA_RMDIR: {
struct coda_rmdir_in *in = (struct coda_rmdir_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_RMDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p %p, %s", node,
buf + in->name);
}
oh->result = dav_rmdir(node, buf + in->name, ih->uid);
len = sizeof(struct coda_out_hdr);
break; }
case CODA_SYMLINK:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_SYMLINK:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_READLINK:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_READLINK:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_FSYNC: {
struct coda_fsync_in *in = (struct coda_fsync_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_FSYNC:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p", node);
}
oh->result = dav_sync(node);
len = sizeof(struct coda_out_hdr);
break; }
case CODA_VGET:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_VGET:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_OPEN_BY_PATH:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"CODA_OPEN_BY_PATH:");
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
case CODA_STATFS:
len = coda_statfs();
break;
case CODA_STORE: {
struct coda_store_in *in = (struct coda_store_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_STORE:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p, f 0x%x",
node, in->flags);
}
oh->result = dav_sync(node);
len = sizeof(struct coda_out_hdr);
break; }
case CODA_RELEASE:
len = coda_close();
last_tidy_cache = 0;
break;
default:
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"UNKNOWN CODA CALL %u", ih->opcode);
oh->result = ENOSYS;
len = sizeof(struct coda_out_hdr);
break;
}

if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "RET: %s",
strerror(oh->result));

ssize_t n = 0;
ssize_t w = 0;
while (n < len && w >= 0) {
w = write(device, buf + n, len - n);
n += w;
}

if (time(NULL) < (last_tidy_cache + idle_time)) {
tv.tv_sec = last_tidy_cache + idle_time - time(NULL);
} else {
dav_tidy_cache();
tv.tv_sec = idle_time;
last_tidy_cache = time(NULL);
}

if (flush) {
coda_flush(device);
flush = 0;
}
}
}


/* Private functions */
/*===================*/

/* Functions to handle upcalls fromthe kernel module.
The cache module only uses data types from the C-library. For file access,
mode and the like it only uses symbolic constants defined in the C-library.
So the main porpose of this functions is to translate from kernel specific
types and constants to types and constants from the C-library, and back.
All of this functions return the amount of data in buf that is to be
send to the kernel module. */

static uint32_t
coda_access(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_access_in *in = (struct coda_access_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_ACCESS:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p, f %x",
node, in->flags);
}

int how = (in->flags & C_A_R_OK) ? R_OK : 0;
how |= (in->flags & C_A_W_OK) ? W_OK : 0;
how |= (in->flags & C_A_X_OK) ? X_OK : 0;
how |= (in->flags & C_A_F_OK) ? F_OK : 0;
oh->result = dav_access(node, ih->uid, how);

return sizeof(struct coda_out_hdr);
}


static uint32_t
coda_close(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_close_in *in = (struct coda_close_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
if (debug) {
if (ih->opcode == CODA_CLOSE) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_CLOSE:");
} else {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_RELEASE:");
}
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p, f %x",
node, in->flags);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " pid %i, pgid %i",
ih->pid, ih->pgid);
}

int flags = 0;
if ((in->flags & C_O_READ) && (in->flags & C_O_WRITE)) {
flags = O_RDWR;
} else if (in->flags & C_O_READ) {
flags = O_RDONLY;
} else if (in->flags & C_O_WRITE) {
flags = O_WRONLY;
}

oh->result = dav_close(node, 0, flags, ih->pid, ih->pgid);

return sizeof(struct coda_out_hdr);
}


static uint32_t
coda_create(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_create_in *in = (struct coda_create_in *) buf;
dav_node *parent = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_create_out *out = (struct coda_create_out *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_CREATE:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p %p, m %o",
parent, in->mode);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " %s", buf + in->name);
}

dav_node *node = NULL;
oh->result = dav_create(&node, parent, buf + in->name, ih->uid,
in->mode & DAV_A_MASK);

if (oh->result || !node) {
if (!oh->result)
oh->result = EIO;
return sizeof(struct coda_out_hdr);
}

out->VFid.opaque[0] = DAV_VOL;
out->VFid.opaque[1] = DAV_VNODE;
out->VFid.opaque[3] = 0;
*((dav_node **) &(out->VFid.opaque[2])) = node;
set_attr(&out->attr, node);

return sizeof(struct coda_create_out);
}


static uint32_t
coda_getattr(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_getattr_in *in = (struct coda_getattr_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_getattr_out *out = (struct coda_getattr_out *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_GETATTR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p", node);
}

oh->result = dav_getattr(node, ih->uid);

if (oh->result)
return sizeof(struct coda_out_hdr);

set_attr(&out->attr, node);

return sizeof(struct coda_getattr_out);
}


static uint32_t
coda_lookup(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_lookup_in *in = (struct coda_lookup_in *) buf;
dav_node *parent = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_lookup_out *out = (struct coda_lookup_out *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_LOOKUP:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p %p, %s", parent,
buf + in->name);
}

dav_node *node = NULL;
oh->result = dav_lookup(&node, parent, buf + in->name, ih->uid);

if (oh->result || !node) {
if (!oh->result)
oh->result = EIO;
return sizeof(struct coda_out_hdr);
}

out->VFid.opaque[0] = DAV_VOL;
out->VFid.opaque[1] = DAV_VNODE;
out->VFid.opaque[3] = 0;
*((dav_node **) &(out->VFid.opaque[2])) = node;
out->vtype = (node->mode & S_IFDIR) ? CDT_DIR : CDT_REG;

return sizeof(struct coda_lookup_out);
}


static uint32_t
coda_mkdir(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_mkdir_in *in = (struct coda_mkdir_in *) buf;
dav_node *parent = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_mkdir_out *out = (struct coda_mkdir_out *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_MKDIR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " p %p, %s", parent,
buf + in->name);
}

dav_node *node = NULL;
oh->result = dav_mkdir(&node, parent, buf + in->name, ih->uid,
in->attr.va_mode & DAV_A_MASK);

if (oh->result || !node) {
if (!oh->result)
oh->result = EIO;
return sizeof(struct coda_out_hdr);
}

out->VFid.opaque[0] = DAV_VOL;
out->VFid.opaque[1] = DAV_VNODE;
out->VFid.opaque[3] = 0;
*((dav_node **) &(out->VFid.opaque[2])) = node;
set_attr(&out->attr, node);

return sizeof(struct coda_mkdir_out);
}


static uint32_t
coda_open_by_fd(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_open_by_fd_in *in = (struct coda_open_by_fd_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_open_by_fd_out *out = (struct coda_open_by_fd_out *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_OPEN_BY_FD:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p, f %x", node,
in->flags);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " pid %i, pgid %i",
ih->pid, ih->pgid);
}

int flags = 0;
if ((in->flags & C_O_READ) && (in->flags & C_O_WRITE)) {
flags = O_RDWR;
} else if (in->flags & C_O_READ) {
flags = O_RDONLY;
} else if (in->flags & C_O_WRITE) {
flags = O_WRONLY;
}
flags |= (in->flags & C_O_TRUNC) ? O_TRUNC : 0;

oh->result = dav_open(&out->fd, node, flags, ih->pid, ih->pgid, ih->uid, 0);

if (oh->result || !out->fd) {
if (!oh->result)
oh->result = EIO;
return sizeof(struct coda_out_hdr);
}

return sizeof(struct coda_open_by_fd_out);
}


static uint32_t
coda_root(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_root_out *out = (struct coda_root_out *) buf;
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_ROOT:");

dav_node *node = NULL;
oh->result = dav_root(&node, ih->uid);

if (oh->result || !node) {
if (!oh->result)
oh->result = EIO;
return sizeof(struct coda_out_hdr);
}

out->VFid.opaque[0] = DAV_VOL;
out->VFid.opaque[1] = DAV_VNODE;
out->VFid.opaque[3] = 0;
*((dav_node **) &(out->VFid.opaque[2])) = node;

return sizeof(struct coda_root_out);
}


static uint32_t
coda_setattr(void)
{
struct coda_in_hdr *ih = (struct coda_in_hdr *) buf;
struct coda_setattr_in *in = (struct coda_setattr_in *) buf;
dav_node *node = *((dav_node **) &(in->VFid.opaque[2]));
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_SETATTR:");
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " n %p, m %o", node,
in->attr.va_mode);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " uid: %i, gid: %i",
in->attr.va_uid, in->attr.va_gid);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " at %li, mt %li",
in->attr.va_atime.tv_sec, in->attr.va_mtime.tv_sec);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " ct %li, sz %llu",
in->attr.va_ctime.tv_sec, in->attr.va_size);
}

oh->result = dav_setattr(node, ih->uid, in->attr.va_mode != USHRT_MAX,
in->attr.va_mode & DAV_A_MASK,
in->attr.va_uid != UINT32_MAX, in->attr.va_uid,
in->attr.va_gid != UINT32_MAX, in->attr.va_gid,
in->attr.va_atime.tv_sec != -1,
in->attr.va_atime.tv_sec,
in->attr.va_mtime.tv_sec != -1,
in->attr.va_mtime.tv_sec,
in->attr.va_size != UINT64_MAX,
in->attr.va_size);

return sizeof(struct coda_out_hdr);
}


static uint32_t
coda_statfs(void)
{
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
struct coda_statfs_out *out = (struct coda_statfs_out *) buf;
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "CODA_STATFS:");

dav_stat *st = dav_statfs();
if (!st) {
oh->result = ENOSYS;
return sizeof(struct coda_out_hdr);
}

out->stat.f_blocks = st->blocks;
out->stat.f_bfree = st->bfree;
out->stat.f_bavail = st->bavail;
out->stat.f_files = st->files;
out->stat.f_ffree = st->ffree;

oh->result = 0;
return sizeof(struct coda_statfs_out);
}


/* Functions that will do a downcall to the kernel module. */

/* Downcall to inform the kernel that nodes have been added or removed. */
static void
coda_flush(int device)
{
struct coda_out_hdr *oh = (struct coda_out_hdr *) buf;
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), " CODA_FLUSH:");

oh->opcode = CODA_FLUSH;
oh->unique = 0;
oh->result = 0;

ssize_t n = 0;
ssize_t w = 0;
while (n < sizeof(struct coda_out_hdr) && w >= 0) {
w = write(device, buf + n, sizeof(struct coda_out_hdr) - n);
n += w;
}
}


/* Auxiliary functions. */

/* Writes a struct venus_dirent to file with file descriptor fd.
fd : An open file descriptor to write to.
off : The current file size.
name : File name; if NULL, the last, empty entry is written.
return value : New size of the file. -1 in case of an error. */
static off_t
write_dir_entry(int fd, off_t off, const dav_node *node, const char *name)
{
struct venus_dirent entry;
size_t head = offsetof(struct venus_dirent, d_name);

if (name) {
entry.d_fileno = (size_t) node / alignment;
entry.d_type = (S_ISDIR(node->mode)) ? CDT_DIR : CDT_REG;
entry.d_namlen = (strlen(name) > CODA_MAXNAMLEN)
? CODA_MAXNAMLEN : strlen(name);
entry.d_reclen = (head + entry.d_namlen +4) & ~3;
} else {
entry.d_fileno = 0;
entry.d_type = 0;
entry.d_namlen = 0;
entry.d_reclen = (head + 4) & ~3;
}

size_t size = 0;
ssize_t ret = 0;
while (ret >= 0 && size < head) {
ret = write(fd, (char *) &entry + size, head - size);
size += ret;
}
if (size != head)
return -1;

ret = 0;
while (ret >= 0 && size < (head + entry.d_namlen)) {
ret = write(fd, name + size - head, entry.d_namlen - size + head);
size += ret;
}
if (size != (head + entry.d_namlen))
return -1;

ret = 0;
while (ret >= 0 && size < entry.d_reclen) {
ret = write(fd, "\0", 1);
size += ret;
}
if (size != entry.d_reclen)
return -1;

return off + entry.d_reclen;
}


/* Translates attribute from node to attr.
Note: Members va_fileid, v_gen, va_flags, va_rdev and va_filerev have no
meaning for davfs. va_fileid is treated like d_fileno in struct venus_dirent,
the other are set to zero. The meaning of va_type is not clear at all.
Times are only set with 1 second precision, as this is the precision of the
last-modified time in HTTP. */
static void
set_attr(struct coda_vattr *attr, const dav_node *node)
{
attr->va_type = 0;
attr->va_mode = node->mode;
if (S_ISDIR(node->mode)) {
attr->va_nlink = node->nref;
} else {
attr->va_nlink = 1;
}
attr->va_uid = node->uid;
attr->va_gid = node->gid;
attr->va_fileid = (size_t) node / alignment;
attr->va_size = node->size;
attr->va_blocksize = blocksize;
attr->va_atime.tv_sec = node->atime;
attr->va_atime.tv_nsec = 0;
attr->va_mtime.tv_sec = node->mtime;
attr->va_mtime.tv_nsec = 0;
attr->va_ctime.tv_sec = node->ctime;
attr->va_ctime.tv_nsec = 0;
attr->va_gen = 0;
attr->va_flags = 0;
attr->va_rdev = 0;
attr->va_bytes = node->size;
attr->va_filerev = 0;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -22,29 +22,6 @@
#define DAV_KERNEL_INTERFACE_H


/* Function type definitions */
/*===========================*/

/* Call back function to be passed to dav_init_kernel_interface(). Will be
called to see whether the file system is still mounted.
return value : 1 is mounted, 0 is not mounted. */
typedef int (*dav_is_mounted_fn)(void);


/* Typedef of the message loop of the specific kernel interfaces. The real
function will be returned by dav_init_kernel_interface().
device : File descriptor of the open fuse device.
buf_size : Size of the buffer for communication with the kernel
module.
idle_t : Time to wait for upcalls before calling dav_tidy_cache().
is_mounted_fn : Call back function to check of still mounted.
keep_on_running : Pointer to run flag.
dbg : send debug messages to syslog if dbg != 0 */
typedef void (*dav_run_msgloop_fn)(int device, size_t bufsize, time_t idle_time,
dav_is_mounted_fn is_mounted,
volatile int *keep_on_running, int dbg);


/* Function prototypes */
/*=====================*/

@ -52,45 +29,18 @@ typedef void (*dav_run_msgloop_fn)(int device, size_t bufsize, time_t idle_time,
mounts the file system and updates the interface data (dev,
dav_ran_msgloop_fn, mdata, kernel_fs and buf_size).
In case of an error it prints an error message and terminates the program.
dev : File descriptor of the open device for communication with the
kernel file system.
msg_loop : The specific message loop function that will process the kernel
upcalls.
mdata : That mount data that will be passed to the mount function.
kernel_fs : Type of the kernel file system to us (fuse or coda). If this
does not work, the other file system will be tried. The name
of the file system that is really used is returned.
If NULL, fuse is tried first.
buf_size : Size of the buffer for communication with the kernel file system
(fuse only). The size passed to this function is checked against
the requirements of the kernel fs and updated if necessary.
url : Server url.
mpoint : Mount point.
mopts : Mount options.
owner : The owner of the file system (fuse only).
group : Group the file system belongs to (fuse only).
mode : Mode of the root node (fuse only).
return value : 0: the file system has not yet been mounted
1: the file system has been mounted successfully. */
int
dav_init_kernel_interface(int *dev, dav_run_msgloop_fn *msg_loop, void **mdata,
char **kernel_fs, size_t *buf_size, const char *url,
const char *mpoint, const dav_args *args);


/* Message loop for coda kernel module CODA_KERNEL_VERSION 3.
Parameters see dav_run_msgloop_fn(). */
void dav_coda_loop(int device, size_t bufsize, time_t idle_time,
dav_is_mounted_fn is_mounted,
volatile int *keep_on_running, int dbg);
args : arguments. */
void
dav_init_kernel_interface(const char *url, const char *mpoint,
const dav_args *args);


/* Message loop for fuse kernel module with major number 7.
Parameters see dav_run_msgloop_fn(). */
keep_on_running : Pointer to run flag. */
void
dav_fuse_loop(int device, size_t bufsize, time_t idle_time,
dav_is_mounted_fn is_mounted, volatile int *keep_on_running,
int dbg);
dav_run_msgloop(volatile int *keep_on_running);


#endif /* DAV_KERNEL_INTERFACE_H */

View File

@ -102,9 +102,6 @@ static char *url;
/* The canonicalized mointpoint. */
static char *mpoint;

/* The type of the kernel file system used. */
static char *kernel_fs;

/* The file that holds information about mounted filesystems
(/proc/mounts or /etc/mtab) */
static char *mounts;
@ -120,6 +117,9 @@ static volatile int keep_on_running = 1;
terminate without uploading dirty files. */
static volatile int got_sigterm;

/* Send debug information about the configuration to the log file. */
static int debug;


/* Private function prototypes */
/*=============================*/
@ -144,12 +144,6 @@ check_permissions(dav_args *args);
static void
gain_privileges(const dav_args *args);

static int
do_mount(dav_args *args, void *mdata);

static int
is_mounted(void);

static dav_args *
parse_commandline(dav_args *args, int argc, char *argv[]);

@ -274,46 +268,24 @@ main(int argc, char *argv[])

dav_init_cache(args, mpoint);

int dev = 0;
dav_run_msgloop_fn run_msgloop = NULL;
void *mdata = NULL;
if (args->kernel_fs)
kernel_fs = xstrdup(args->kernel_fs);
size_t buf_size = args->buf_size * 1024;
gain_privileges(args);
int mounted = dav_init_kernel_interface(&dev, &run_msgloop, &mdata,
&kernel_fs, &buf_size, url, mpoint,
args);
dav_init_kernel_interface(url, mpoint, args);
release_privileges(args);
if (args->debug & DAV_DBG_CONFIG)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "kernel_fs: %s", kernel_fs);

if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Writing mtab entry");
write_mtab_entry(args);

if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Fork into daemon mode");
pid_t childpid = fork();
if (childpid > 0) {

if (args->debug & DAV_DBG_CONFIG)
if (debug) {
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"Parent: parent pid: %i, child pid: %i", getpid(), childpid);
if (!mounted) {
if (args->debug & DAV_DBG_CONFIG)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"Parent: mounting filesystem");
if (do_mount(args, mdata) != 0) {
kill(childpid, SIGTERM);
delete_args(args);
exit(EXIT_FAILURE);
}
}

if (args->debug & DAV_DBG_CONFIG)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"Parent: writing mtab entry");
write_mtab_entry(args);

if (args->debug & DAV_DBG_CONFIG)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Parent: leaving now");
}
delete_args(args);
exit(EXIT_SUCCESS);

@ -322,7 +294,7 @@ main(int argc, char *argv[])
error(EXIT_FAILURE, errno, _("can't start daemon process"));
}

if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Set signal handler");
struct sigaction action;
action.sa_handler = termination_handler;
@ -335,7 +307,7 @@ main(int argc, char *argv[])

int ret = 0;

if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Releasing root privileges");
gain_privileges(args);
ret = setuid(args->uid);
@ -345,14 +317,11 @@ main(int argc, char *argv[])
kill(getppid(), SIGHUP);
}

time_t idle_time = args->delay_upload;
if (!idle_time)
idle_time = DAV_DELAY_UPLOAD;
int debug = args->debug;
delete_args(args);
setsid();

if (!ret) {
if (debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Releasing terminal");
close(STDIN_FILENO);
close(STDOUT_FILENO);
@ -368,7 +337,7 @@ main(int argc, char *argv[])
}

if (!ret) {
if (debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Writing pid file");
ret = save_pid();
if (ret) {
@ -379,31 +348,49 @@ main(int argc, char *argv[])
}

if (!ret) {
if (debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Starting message loop");
run_msgloop(dev, buf_size, idle_time, is_mounted, &keep_on_running,
debug & DAV_DBG_KERNEL);
dav_run_msgloop(&keep_on_running);
}

if (debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Closing");
dav_close_cache(got_sigterm);
dav_close_webdav();
if (is_mounted()) {
if (dav_is_mounted()) {
char *prog = xasprintf("/bin/umount -il %s", mpoint);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_ERR), _("unmounting %s"), mpoint);
if (system(prog) != 0)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_ERR), _("unmounting failed"));
}
if (debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Removing %s", pidfile);
remove(pidfile);
if (debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Done.");
return 0;
}


int
dav_is_mounted(void)
{
int found = 0;
FILE *mtab = setmntent(mounts, "r");
if (mtab) {
struct mntent *mt = getmntent(mtab);
while (mt && !found) {
if (strcmp(mpoint, mt->mnt_dir) == 0
&& strcmp(url, mt->mnt_fsname) == 0)
found = 1;
mt = getmntent(mtab);
}
}
endmntent(mtab);
return found;
}


char *
dav_user_input_hidden(const char *prompt)
{
@ -451,7 +438,7 @@ change_persona(dav_args *args)
args->uid = args->dav_uid;
release_privileges(args);

if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"changing persona: euid %i, gid %i", geteuid(), getgid());
}
@ -476,7 +463,7 @@ check_dirs(dav_args *args)
} else {
mounts = _PATH_MOUNTED;
}
if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "mounts in: %s", mounts);

gain_privileges(args);
@ -660,7 +647,7 @@ check_double_mounts(dav_args *args)
}
char *pidf = xasprintf("%s/%s.pid", DAV_SYS_RUN, mp);
free(mp);
if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "PID file: %s", pidf);

FILE *file = fopen(pidf, "r");
@ -768,7 +755,7 @@ check_permissions(dav_args *args)
if (args->fsuid != args->uid)
error(EXIT_FAILURE, 0,
_("you can't set file owner different from your uid"));
if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "uid ok");

if (args->gid != args->fsgid) {
@ -781,7 +768,7 @@ check_permissions(dav_args *args)
error(EXIT_FAILURE, 0,
_("you must be member of the group of the file system"));
}
if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "gid ok");

int i;
@ -792,36 +779,12 @@ check_permissions(dav_args *args)
if (i == args->ngroups)
error(EXIT_FAILURE, 0, _("user %s must be member of group %s"),
args->uid_name, args->dav_group);
if (args->debug & DAV_DBG_CONFIG)
if (debug)
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
"memeber of group %s", args->dav_group);
}


/* Calls the mount()-function to mount the file system.
Uses private global variables url and mpoint as device and mount point,
kernel_fs as file system type, mopts as mount options and mdata
as mount data.
return value : 0 on success, -1 if mount() fails. */
static int
do_mount(dav_args *args, void *mdata)
{
gain_privileges(args);
int ret = mount(url, mpoint, kernel_fs, args->mopts, mdata);
release_privileges(args);

if (ret) {
error(0, errno, _("can't mount %s on %s"), url, mpoint);
if (errno == ENODEV)
error(0, 0, _("kernel does not know file system %s"), kernel_fs);
if (errno == EBUSY)
error(0, 0, _("mount point is busy"));
return -1;
}
return 0;
}


/* Gains super user privileges. If an error occurs it prints an error
message and calls exit(EXIT_FAILURE). */
static void
@ -838,29 +801,6 @@ gain_privileges(const dav_args *args)
}


/* Checks wether the file system is mounted.
It uses information from the private global variables mounts (mtab-file),
url (must be device in the mtab entry) and mpoint (mount point).
return value : 0 - no matching entry in the mtab-file (not mounted)
1 - matching entry in the mtab-file (mounted) */
static int
is_mounted(void)
{
int found = 0;
FILE *mtab = setmntent(mounts, "r");
if (mtab) {
struct mntent *mt = getmntent(mtab);
while (mt && !found) {
if (strcmp(mpoint, mt->mnt_dir) == 0
&& strcmp(url, mt->mnt_fsname) == 0)
found = 1;
mt = getmntent(mtab);
}
}
endmntent(mtab);
return found;
}

/* Parses commandline arguments and options and stores them in args and the
private global variables url and mpoint.
For arguments and options please see the usage()-funktion.
@ -1044,7 +984,11 @@ parse_config(dav_args *args)
if (!args->backup_dir)
args->backup_dir = xstrdup(DAV_BACKUP_DIR);

if (args->debug & DAV_DBG_CONFIG)
if (!args->delay_upload)
args->delay_upload = DAV_DELAY_UPLOAD;

debug = args->debug & DAV_DBG_CONFIG;
if (debug)
log_dbg_config(args);
}

@ -1364,8 +1308,6 @@ delete_args(dav_args *args)
free(args->conf);
if (args->add_mopts)
free(args->add_mopts);
if (args->kernel_fs)
free(args->kernel_fs);
if (args->scheme)
free(args->scheme);
if (args->host)
@ -1739,8 +1681,6 @@ log_dbg_config(dav_args *args)
" mopts: %#lx", args->mopts);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
" add_mopts: %s", args->add_mopts);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
" kernel_fs: %s", args->kernel_fs);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
" buf_size: %llu KiB", (unsigned long long) args->buf_size);
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG),
@ -2134,10 +2074,6 @@ read_config(dav_args *args, const char * filename, int system)
if (args->dav_group)
free(args->dav_group);
args->dav_group = xstrdup(parmv[1]);
} else if (strcmp(parmv[0], "kernel_fs") == 0) {
if (args->kernel_fs)
free(args->kernel_fs);
args->kernel_fs = xstrdup(parmv[1]);
} else if (strcmp(parmv[0], "buf_size") == 0) {
args->buf_size = arg_to_int(parmv[1], 10, parmv[0]);
} else if (strcmp(parmv[0], "trust_ca_cert") == 0

View File

@ -51,7 +51,6 @@ typedef struct {
int netdev; /* Command line */
unsigned long int mopts; /* Command line */
char *add_mopts;
char *kernel_fs; /* User config file, system config file */
size_t buf_size; /* User config file, system config file */
/* File mode */
uid_t fsuid; /* Command line */
@ -164,6 +163,15 @@ int
main(int argc, char *argv[]);


/* Checks wether the file system is mounted.
It uses information from the private global variables mounts (mtab-file),
url (must be device in the mtab entry) and mpoint (mount point).
return value : 0 - no matching entry in the mtab-file (not mounted)
1 - matching entry in the mtab-file (mounted) */
int
dav_is_mounted(void);


/* Prints prompt to stdout and reads a line from stdin.
Echoing the user input to stdout is prohibited.
A trailing newline is removed.