Remove support for Coda
This commit is contained in:
parent
2c7e88f6c5
commit
d61383d148
@ -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([])
|
||||
|
@ -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.
|
||||
|
@ -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
@ -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
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
393
po/cs.po
@ -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"
|
||||
|
||||
|
349
po/davfs2.pot
349
po/davfs2.pot
@ -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
370
po/de.po
@ -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"
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
89
src/cache.c
89
src/cache.c
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
17
src/cache.h
17
src/cache.h
@ -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.
|
||||
|
643
src/coda.h
643
src/coda.h
@ -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
|
||||
|
824
src/dav_coda.c
824
src/dav_coda.c
@ -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;
|
||||
}
|
1137
src/dav_fuse.c
1137
src/dav_fuse.c
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user