mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-09-01 14:55:10 +00:00
Compare commits
475 Commits
fix-priori
...
v4.1.1
Author | SHA1 | Date | |
---|---|---|---|
|
6f83b3491a | ||
|
9cc2931d1b | ||
|
20544e0f74 | ||
|
65f5f2a28d | ||
|
9d9ef3f977 | ||
|
b6bb081738 | ||
|
5d4cbeea5e | ||
|
51cc3748fc | ||
|
7b6e1a45d6 | ||
|
104d601657 | ||
|
b50ee98352 | ||
|
951c683dfa | ||
|
60025a8479 | ||
|
392257c1e5 | ||
|
5a82779c4c | ||
|
99680f3086 | ||
|
0ae13d8e4a | ||
|
a2ef5d48c5 | ||
|
a23b0ec4a0 | ||
|
2df16cc5a2 | ||
|
662f4ef8af | ||
|
25642d1c71 | ||
|
bac4844329 | ||
|
ad4c0b9567 | ||
|
981b08e9f9 | ||
|
67f51a4502 | ||
|
5c39009b23 | ||
|
ab44dddba9 | ||
|
3d14d51253 | ||
|
e026d4a95d | ||
|
699ef083a6 | ||
|
c0f6085952 | ||
|
1dba775f1d | ||
|
6ca0353efd | ||
|
d8bacb87b4 | ||
|
955d302fec | ||
|
1da593aa2e | ||
|
97d64497f1 | ||
|
dd9485b5be | ||
|
1e95e32252 | ||
|
4d76854372 | ||
|
29f6ac644f | ||
|
53074bb906 | ||
|
62aeb03d99 | ||
|
cb67e865cf | ||
|
3cc7bf844e | ||
|
fff99a1c6a | ||
|
3023e6cd09 | ||
|
9178bfc444 | ||
|
959b1e0405 | ||
|
67dc25ac6d | ||
|
a974ad85fc | ||
|
99fd58ee09 | ||
|
8252aa572b | ||
|
adbe66f118 | ||
|
31569f9f7d | ||
|
f70e8998ba | ||
|
a8c45527f1 | ||
|
40d7eeec32 | ||
|
17adb705a9 | ||
|
18245d5e3a | ||
|
20aa4a3ee2 | ||
|
b4b6e8103a | ||
|
e6c9371a2a | ||
|
ef74bce3b6 | ||
|
14e03dcf40 | ||
|
f9c90d57af | ||
|
204cce791f | ||
|
262743cdc5 | ||
|
d7563e745d | ||
|
2af2fb935b | ||
|
953d384691 | ||
|
13d6779c0b | ||
|
1e5adc354b | ||
|
2a78af408a | ||
|
970a035e86 | ||
|
1b2f46ab11 | ||
|
2362f00ca6 | ||
|
5019810f4e | ||
|
81d98c432b | ||
|
1f5ee23edb | ||
|
bce038054e | ||
|
7d93f0620a | ||
|
e70e5f880d | ||
|
851cb626f8 | ||
|
b8fc2b7ea0 | ||
|
65ac6983c5 | ||
|
98eb4032f4 | ||
|
33b953b160 | ||
|
b7b2fe6605 | ||
|
37f792377c | ||
|
739fea2ece | ||
|
27748237f1 | ||
|
3cd419eab5 | ||
|
9c2385d2b3 | ||
|
500d8af648 | ||
|
4d488c8d73 | ||
|
7e9ea2d7d5 | ||
|
80de221cb9 | ||
|
6ae7ce4cb5 | ||
|
13deab75c2 | ||
|
a6224455df | ||
|
5698a624ea | ||
|
b216d9860f | ||
|
bf23be40b9 | ||
|
89db7e16e0 | ||
|
1f414ce6ba | ||
|
2bf37edcaa | ||
|
5c13f8b5b8 | ||
|
ca71a83a62 | ||
|
8645cff654 | ||
|
f4f43271e2 | ||
|
c90d9b9288 | ||
|
cb7b61210c | ||
|
ecb246ec2f | ||
|
a7ab4b1561 | ||
|
518ccaf861 | ||
|
b438043963 | ||
|
fd7bc07f38 | ||
|
da1848338f | ||
|
7aa4547c29 | ||
|
662d3dd610 | ||
|
1302746049 | ||
|
33b2e12c12 | ||
|
ead6ff3dbe | ||
|
e5ae857546 | ||
|
50b30c2922 | ||
|
2312869d6f | ||
|
c72c15cb27 | ||
|
d2707329ba | ||
|
3aa8c4959f | ||
|
12941af65f | ||
|
d0e07e542b | ||
|
2acd4f5c7d | ||
|
ae4f303907 | ||
|
b5e216a8de | ||
|
187a1700fa | ||
|
0179d52a9f | ||
|
5184066d81 | ||
|
9890acd0c5 | ||
|
819b60f37d | ||
|
1c3672a644 | ||
|
529f541e7a | ||
|
c91730e8ca | ||
|
c0f4a91181 | ||
|
0a549886d4 | ||
|
7f97215c75 | ||
|
00c84dc82b | ||
|
48d837d829 | ||
|
65971c8764 | ||
|
042d3b783f | ||
|
6089302f0b | ||
|
47096faadd | ||
|
0587826fb4 | ||
|
f7503ca183 | ||
|
908606e8a1 | ||
|
ecf89330d4 | ||
|
e931561129 | ||
|
cb2b8aef20 | ||
|
e0e464b757 | ||
|
f7c3a28901 | ||
|
e3b23b1598 | ||
|
f308742119 | ||
|
7b01cd51e8 | ||
|
afb3866c0a | ||
|
2ab1941d9d | ||
|
6e37bc0067 | ||
|
29f66c3828 | ||
|
71dbc73532 | ||
|
d4ee66e8f4 | ||
|
a2335e9395 | ||
|
fbb2ae8b05 | ||
|
e6d4f79919 | ||
|
2845e42c5e | ||
|
ef44d8e177 | ||
|
f255fcfcde | ||
|
21922fea25 | ||
|
daaf768b3f | ||
|
1d31e9e3ba | ||
|
40510ba5c0 | ||
|
87d2513823 | ||
|
6593912bef | ||
|
2270a4f44e | ||
|
325143a3e8 | ||
|
77962f6de3 | ||
|
a6bb35dbe7 | ||
|
0da5f211b3 | ||
|
73188a0da1 | ||
|
535da1dbea | ||
|
181f49b20f | ||
|
0390e2a7ec | ||
|
42313d81c7 | ||
|
3f40d58642 | ||
|
3164268b4a | ||
|
74ed54eb28 | ||
|
6e078296bc | ||
|
ff3db97d5d | ||
|
5f8c2c5fc9 | ||
|
ee2dc1bd64 | ||
|
161863ea4f | ||
|
b04faf1afc | ||
|
9e94256fff | ||
|
5776e5c9df | ||
|
410e486cde | ||
|
306d11538a | ||
|
7cbbcdad42 | ||
|
0a0e920c0c | ||
|
0b27a5e0cb | ||
|
82f815c587 | ||
|
e9429a9eaa | ||
|
934c41c1e8 | ||
|
519b7cf4a4 | ||
|
3ab5d7871f | ||
|
c2e99bfbfe | ||
|
e8cb8da296 | ||
|
ae08d09995 | ||
|
dce45c5c4f | ||
|
7423e4199a | ||
|
c671d6c9cc | ||
|
cc40903e99 | ||
|
9ce2a7d83a | ||
|
e5a86a096c | ||
|
26818e3747 | ||
|
731782ae47 | ||
|
09cdb28270 | ||
|
39af57ff40 | ||
|
db8dd88f44 | ||
|
d7b1b24736 | ||
|
7be9a394f8 | ||
|
6f1c29eca0 | ||
|
07b0cbfafb | ||
|
77455d848c | ||
|
956dc6e9c0 | ||
|
74c69b23eb | ||
|
d149113594 | ||
|
2396b4ff14 | ||
|
cbbe950898 | ||
|
6ddb51e10e | ||
|
aa9e33283e | ||
|
6fe9d2c6a3 | ||
|
15748e2785 | ||
|
d3e3aa87a1 | ||
|
cf7f0584dc | ||
|
2333d48880 | ||
|
14b54439d9 | ||
|
5f3879fce4 | ||
|
cd01b4be6a | ||
|
fff8ea6d0e | ||
|
25740f2b97 | ||
|
88020379ca | ||
|
48d8ec1774 | ||
|
d532104072 | ||
|
221e711cd4 | ||
|
ba0704c206 | ||
|
3f15ce23ba | ||
|
6077cf37c6 | ||
|
0ea717b352 | ||
|
05e42b6a84 | ||
|
6956eef4cc | ||
|
0667dc7318 | ||
|
859fb4ab72 | ||
|
b548d02bd8 | ||
|
15bbe786f9 | ||
|
654b5a2499 | ||
|
c7574c8687 | ||
|
fce197e45d | ||
|
c35eebf008 | ||
|
5481571cca | ||
|
ccdd3c8353 | ||
|
5abcb72699 | ||
|
1d999a1735 | ||
|
b6ea99bb43 | ||
|
b191574d8f | ||
|
5efed44a32 | ||
|
79abf37d55 | ||
|
d597549a73 | ||
|
c07a77bcc4 | ||
|
965b78b347 | ||
|
85fddb9e69 | ||
|
c36660c394 | ||
|
467ddd97b0 | ||
|
b0ccb9bdf1 | ||
|
ac0d740110 | ||
|
d09df550f1 | ||
|
3e8f851691 | ||
|
1555b8371b | ||
|
1500022fa8 | ||
|
e38516993c | ||
|
4ef5ac8399 | ||
|
5e42f492f6 | ||
|
e9c76f03c8 | ||
|
b8cd4c9df9 | ||
|
29f6786eeb | ||
|
88c5565552 | ||
|
494afc470e | ||
|
847233b6d6 | ||
|
07e4acfd26 | ||
|
6f2e854320 | ||
|
c5286ff4df | ||
|
00d3e750e6 | ||
|
efb951c2a8 | ||
|
f19ec79869 | ||
|
eec48458ac | ||
|
58250a5ca3 | ||
|
e475b3e2f2 | ||
|
9a3f7a1f6e | ||
|
728145f3fb | ||
|
51325b3ab7 | ||
|
f4a07a07c2 | ||
|
b59626a224 | ||
|
d72fa8834c | ||
|
f6c7899f36 | ||
|
eb89538cab | ||
|
049ad49ffb | ||
|
150d81a705 | ||
|
1567a2de16 | ||
|
0f2509d74a | ||
|
24e7b806cc | ||
|
db93b6c639 | ||
|
4c849a9c9e | ||
|
6de66daba4 | ||
|
2e41f447d2 | ||
|
97051875d0 | ||
|
43c759afc6 | ||
|
a6b9fc49d2 | ||
|
fcbfaa29b2 | ||
|
08cd2271ed | ||
|
2571d5bbc0 | ||
|
dde841575e | ||
|
4b290a922a | ||
|
8d9a061a45 | ||
|
94ea0f00b1 | ||
|
99e919c288 | ||
|
d805b5c3f8 | ||
|
2aa7fe4659 | ||
|
c456101ebb | ||
|
9875ba19ef | ||
|
ab15e29654 | ||
|
320a2a5155 | ||
|
00dc6794f5 | ||
|
958a77a2db | ||
|
b4aa2cfde4 | ||
|
86273b746a | ||
|
6a26d1f58c | ||
|
17d3545d07 | ||
|
640c3dde26 | ||
|
380a5c8a72 | ||
|
f26f577742 | ||
|
2700e58755 | ||
|
427a895288 | ||
|
dc0a9dc599 | ||
|
74219b34dc | ||
|
5aaa45e4ce | ||
|
0c02c8afe1 | ||
|
70ed8d6f38 | ||
|
5751614928 | ||
|
73842b54f7 | ||
|
54f1cf8dca | ||
|
2de3b84de2 | ||
|
9fc848be81 | ||
|
fefbf514f7 | ||
|
ae0c588acb | ||
|
0af8c5e26f | ||
|
f4deae6759 | ||
|
0691cfcf3c | ||
|
760ddaeb80 | ||
|
4e46df38cf | ||
|
e9858c0c43 | ||
|
0e59b99623 | ||
|
9a2f0ff702 | ||
|
c153a6916f | ||
|
2316ad42d4 | ||
|
e46ca918a2 | ||
|
610d383de2 | ||
|
5ae6f202f8 | ||
|
d96d69a60c | ||
|
164526d16a | ||
|
5267a7eb14 | ||
|
fd24c230c9 | ||
|
14933dc768 | ||
|
9bf91bbe40 | ||
|
8597b04aac | ||
|
28537ff8ec | ||
|
f90a041921 | ||
|
ae0d1aafda | ||
|
403b3cad10 | ||
|
851f6013f6 | ||
|
0838496c32 | ||
|
191f01b749 | ||
|
788d29aacb | ||
|
1b70d1e9c2 | ||
|
00a5c07db5 | ||
|
6876448a24 | ||
|
297cd44aff | ||
|
32da740f1b | ||
|
b24f0bbfa8 | ||
|
5a4ddbeaeb | ||
|
fd253d1c31 | ||
|
505faeff10 | ||
|
3d5346b48e | ||
|
1d9e28df35 | ||
|
9995e36347 | ||
|
08aeeedc69 | ||
|
d426129baf | ||
|
cda7af8561 | ||
|
f5844dc267 | ||
|
52b83aeac4 | ||
|
89fd37abbf | ||
|
ffff25e21b | ||
|
0e7e509ba8 | ||
|
4722ff8e65 | ||
|
d88c6d3bca | ||
|
37ea52db0c | ||
|
da9c59ab09 | ||
|
8fde25d828 | ||
|
5aa7d046db | ||
|
9c3ac976ec | ||
|
f433acb219 | ||
|
5ee3c03101 | ||
|
6fdc08a5a5 | ||
|
e931449ffc | ||
|
203b4994e9 | ||
|
7b53763f92 | ||
|
ddb33d348c | ||
|
8274bff547 | ||
|
b17750163b | ||
|
9c229d1452 | ||
|
702f2863a4 | ||
|
989bf0b3ed | ||
|
9b1d0ea3d8 | ||
|
a577d92c7b | ||
|
a16aff8e20 | ||
|
4099bf6574 | ||
|
a102e9dc55 | ||
|
7c1eff3867 | ||
|
d69d4d3ddf | ||
|
5c04b791d2 | ||
|
be8d85603e | ||
|
450813869a | ||
|
65c41b7fac | ||
|
d19e5e8990 | ||
|
c11ad3e675 | ||
|
de2bb16ad6 | ||
|
4f1d2ac549 | ||
|
cc9f0ed538 | ||
|
1b8afda407 | ||
|
9aae96356e | ||
|
b5db2361f3 | ||
|
5db4a1e7ca | ||
|
230a975916 | ||
|
aa3592a57e | ||
|
a9aef6f37b | ||
|
c71c486313 | ||
|
4213dcc586 | ||
|
ff7f0ff0ea | ||
|
9da0f6d3db | ||
|
0c1c186267 | ||
|
bfd2a0e014 | ||
|
c87fb0a8c1 | ||
|
05debdb2d8 | ||
|
8b06f61bea | ||
|
34a706f566 | ||
|
a31cbd07aa | ||
|
c4c020cdc0 | ||
|
3c00ed7c85 | ||
|
bf8fd8cfac | ||
|
2ca7d30590 | ||
|
5a39ae82fe | ||
|
c7ce54bcbf | ||
|
2318ba598c | ||
|
3d403fe2a7 | ||
|
9074b20a95 | ||
|
7949339b93 | ||
|
80b6e4ddff | ||
|
d824adcf93 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,4 @@
|
||||
apparmor-*
|
||||
apparmor-
|
||||
cscope.*
|
||||
binutils/aa-enabled
|
||||
binutils/aa-enabled.1
|
||||
@@ -203,6 +203,7 @@ utils/apparmor/*.pyc
|
||||
utils/apparmor/rule/*.pyc
|
||||
utils/apparmor.egg-info/
|
||||
utils/build/
|
||||
!utils/emacs/apparmor-mode.el
|
||||
utils/htmlcov/
|
||||
utils/test/common_test.pyc
|
||||
utils/test/.coverage
|
||||
|
165
.gitlab-ci.yml
165
.gitlab-ci.yml
@@ -1,3 +1,9 @@
|
||||
spec:
|
||||
inputs:
|
||||
build-test-images:
|
||||
default: false
|
||||
type: boolean
|
||||
description: Explicitly build virtual machine images used by integration tests.
|
||||
---
|
||||
image: ubuntu:latest
|
||||
|
||||
@@ -13,8 +19,10 @@ workflow:
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
- spread
|
||||
|
||||
.ubuntu-common:
|
||||
interruptible: true
|
||||
before_script:
|
||||
# Install build-dependencies by loading the package list from the ubuntu/debian cloud-init profile.
|
||||
- printf '\e[0K%s:%s:%s[collapsed=true]\r\e[0K%s\n' section_start "$(date +%s)" install_deps "Installing dependencies..."
|
||||
@@ -126,19 +134,6 @@ test-profiles:
|
||||
- make -C profiles check-abstractions.d
|
||||
- make -C profiles check-local
|
||||
|
||||
# Build the regression tests (don't run them because that needs kernel access)
|
||||
test-build-regression:
|
||||
stage: test
|
||||
needs: ["build-all"]
|
||||
extends:
|
||||
- .ubuntu-common
|
||||
script:
|
||||
# Additional dependencies required by regression tests
|
||||
- printf '\e[0K%s:%s:%s[collapsed=true]\r\e[0K%s\n' section_start "$(date +%s)" install_extra_deps "Installing additional dependencies..."
|
||||
- apt-get install --no-install-recommends -y attr fuse-overlayfs libdbus-1-dev liburing-dev
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K\n' section_end "$(date +%s)" install_extra_deps
|
||||
- make -C tests/regression/apparmor -j $(nproc)
|
||||
|
||||
shellcheck:
|
||||
stage: test
|
||||
needs: []
|
||||
@@ -175,6 +170,7 @@ variables:
|
||||
|
||||
coverity:
|
||||
stage: .post
|
||||
interruptible: true
|
||||
extends:
|
||||
- .ubuntu-common
|
||||
script:
|
||||
@@ -196,3 +192,146 @@ coverity:
|
||||
- "apparmor-*.tar.gz"
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "apparmor/apparmor"
|
||||
|
||||
.image-garden-x86_64:
|
||||
stage: spread
|
||||
interruptible: true
|
||||
# TODO: use tagged release once container tagging is improved upstream.
|
||||
image: registry.gitlab.com/zygoon/image-garden:latest
|
||||
tags:
|
||||
- linux
|
||||
- x86_64
|
||||
- kvm
|
||||
variables:
|
||||
ARCH: x86_64
|
||||
GARDEN_DL_DIR: dl
|
||||
CACHE_POLICY: pull-push
|
||||
CACHE_COMPRESSION_LEVEL: fastest
|
||||
before_script:
|
||||
# Restore the mtime of the .image-garden.mk file. This helps make determine
|
||||
# if there's actually something to do correctly. Git does not preserve the
|
||||
# mtime of files during checkout.
|
||||
- git restore-mtime .image-garden.mk
|
||||
# Prepare the image in dry-run mode. This helps in debugging cache misses
|
||||
# when files are not cached correctly by the runner, causing the build section
|
||||
# below to always do hevy-duty work.
|
||||
- printf '\e[0K%s:%s:%s[collapsed=true]\r\e[0K%s\n' section_start "$(date +%s)" prepare_image_dry_run "Prepare image (dry run)"
|
||||
- image-garden make --dry-run --debug "$GARDEN_SYSTEM.$ARCH.run" "$GARDEN_SYSTEM.$ARCH.qcow2" "$GARDEN_SYSTEM.seed.iso" "$GARDEN_SYSTEM.user-data" "$GARDEN_SYSTEM.meta-data"
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K\n' section_end "$(date +%s)" prepare_image_dry_run
|
||||
script:
|
||||
# Prepare the image, for real.
|
||||
- printf '\e[0K%s:%s:%s[collapsed=true]\r\e[0K%s\n' section_start "$(date +%s)" prepare_image "Prepare image"
|
||||
# If there's nothing to do then remove all the files that we would normally
|
||||
# cache so that GitLab skips the cache upload step. This saves significant
|
||||
# time required to re-compress and upload unchanged content.
|
||||
# The idea for how to do is is documented at
|
||||
# https://olex.biz/2025/04/gitlab-ci-prevent-cache-reupload-without-changes/
|
||||
# The GitLab issue requesting a proper feature is
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/226068
|
||||
- |
|
||||
if image-garden make --question "$GARDEN_SYSTEM.$ARCH.run" "$GARDEN_SYSTEM.$ARCH.qcow2" "$GARDEN_SYSTEM.seed.iso" "$GARDEN_SYSTEM.user-data" "$GARDEN_SYSTEM.meta-data"; then
|
||||
rm -f "$GARDEN_SYSTEM".* efi-code.*.img efi-vars.*.img
|
||||
rm -rf "$GARDEN_DL_DIR"
|
||||
else
|
||||
image-garden make "$GARDEN_SYSTEM.$ARCH.run" "$GARDEN_SYSTEM.$ARCH.qcow2" "$GARDEN_SYSTEM.seed.iso" "$GARDEN_SYSTEM.user-data" "$GARDEN_SYSTEM.meta-data"
|
||||
fi
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K\n' section_end "$(date +%s)" prepare_image
|
||||
cache:
|
||||
# Cache the base image (pre-customization).
|
||||
- key: image-garden-base-${GARDEN_SYSTEM}.${ARCH}
|
||||
policy: $CACHE_POLICY
|
||||
when: always
|
||||
paths:
|
||||
- $GARDEN_DL_DIR
|
||||
# Those are never mutated so they are safe to share.
|
||||
- efi-code.*.img
|
||||
- efi-vars.*.img
|
||||
# Cache the customized system. This cache depends on .image-garden.mk file
|
||||
# so that any customization updates are immediately acted upon.
|
||||
- key:
|
||||
prefix: image-garden-custom-${GARDEN_SYSTEM}.${ARCH}-
|
||||
files:
|
||||
- .image-garden.mk
|
||||
policy: $CACHE_POLICY
|
||||
when: always
|
||||
paths:
|
||||
- $GARDEN_SYSTEM.*
|
||||
- $GARDEN_SYSTEM.seed.iso
|
||||
- $GARDEN_SYSTEM.meta-data
|
||||
- $GARDEN_SYSTEM.user-data
|
||||
|
||||
# This job builds and caches the image that the job below looks at.
|
||||
image-ubuntu-cloud-24.04-x86_64:
|
||||
extends: .image-garden-x86_64
|
||||
variables:
|
||||
GARDEN_SYSTEM: ubuntu-cloud-24.04
|
||||
needs: []
|
||||
dependencies: []
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
changes:
|
||||
paths:
|
||||
- .image-garden.mk
|
||||
- .gitlab-ci.yml
|
||||
compare_to: "refs/heads/master"
|
||||
- if: $CI_COMMIT_BRANCH && "$[[ inputs.build-test-images ]]" == "true"
|
||||
|
||||
.spread-x86_64:
|
||||
extends: .image-garden-x86_64
|
||||
variables:
|
||||
# GitLab project identifier of zygoon/spread-dist can be seen on
|
||||
# https://gitlab.com/zygoon/spread-dist, under the three-dot menu on
|
||||
# top-right.
|
||||
SPREAD_GITLAB_PROJECT_ID: "65375371"
|
||||
# Git revision of spread to install.
|
||||
# This must have been built via spread-dist.
|
||||
# TODO: switch to upstream 1.0 release when available.
|
||||
SPREAD_REV: 413817eda7bec07a3885e0717c178b965f8924e1
|
||||
# Run all the tasks for a given system.
|
||||
SPREAD_ARGS: "garden:$GARDEN_SYSTEM:"
|
||||
SPREAD_GOARCH: amd64
|
||||
before_script:
|
||||
# Restore the mtime of the .image-garden.mk file. This helps make determine
|
||||
# if there's actually something to do correctly. Git does not preserve the
|
||||
# mtime of files during checkout.
|
||||
- git restore-mtime .image-garden.mk
|
||||
# Prepare the image in dry-run mode. This helps in debugging cache misses
|
||||
# when files are not cached correctly by the runner, causing the build section
|
||||
# below to always do hevy-duty work.
|
||||
- printf '\e[0K%s:%s:%s[collapsed=true]\r\e[0K%s\n' section_start "$(date +%s)" prepare_image_dry_run "Prepare image (dry run)"
|
||||
- image-garden make --dry-run --debug "$GARDEN_SYSTEM.$ARCH.run" "$GARDEN_SYSTEM.$ARCH.qcow2" "$GARDEN_SYSTEM.seed.iso" "$GARDEN_SYSTEM.user-data" "$GARDEN_SYSTEM.meta-data"
|
||||
- stat .image-garden.mk "$GARDEN_SYSTEM".* || true
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K\n' section_end "$(date +%s)" prepare_image_dry_run
|
||||
# Install the selected revision of spread.
|
||||
- printf '\e[0K%s:%s:%s[collapsed=true]\r\e[0K%s\n' section_start "$(date +%s)" install_spread "Installing spread..."
|
||||
# Install pre-built spread from https://gitlab.com/zygoon/spread-dist generic package repository.
|
||||
- |
|
||||
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --location --output spread "${CI_API_V4_URL}/projects/${SPREAD_GITLAB_PROJECT_ID}/packages/generic/spread/${SPREAD_REV}/spread.${SPREAD_GOARCH}"
|
||||
- chmod +x spread
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K\n' section_end "$(date +%s)" install_spread
|
||||
script:
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K%s\n' section_start "$(date +%s)" run_spread "Running spread for $GARDEN_SYSTEM..."
|
||||
# TODO: transform to inject ^...$ to properly select jobs to run.
|
||||
- mkdir -p spread-logs spread-artifacts
|
||||
- ./spread -list $SPREAD_ARGS |
|
||||
split --number=l/"${CI_NODE_INDEX:-1}"/"${CI_NODE_TOTAL:-1}" |
|
||||
xargs --verbose ./spread -v -artifacts ./spread-artifacts -v | tee spread-logs/"$GARDEN_SYSTEM".log
|
||||
- printf '\e[0K%s:%s:%s\r\e[0K\n' section_end "$(date +%s)" run_spread
|
||||
artifacts:
|
||||
paths:
|
||||
- spread-logs
|
||||
- spread-artifacts
|
||||
when: always
|
||||
|
||||
spread-ubuntu-cloud-24.04-x86_64:
|
||||
extends: .spread-x86_64
|
||||
variables:
|
||||
GARDEN_SYSTEM: ubuntu-cloud-24.04
|
||||
SPREAD_ARGS: garden:$GARDEN_SYSTEM:tests/regression/ garden:$GARDEN_SYSTEM:tests/profiles/
|
||||
CACHE_POLICY: pull
|
||||
dependencies: []
|
||||
needs:
|
||||
- job: image-ubuntu-cloud-24.04-x86_64
|
||||
optional: true
|
||||
parallel: 4
|
||||
|
@@ -2,6 +2,11 @@
|
||||
# All the package installation happens through cloud-init profiles defined
|
||||
# below.
|
||||
|
||||
# NOTE: Should the kernel be out of date, just increment this value. Make will
|
||||
# re-create the image whenever the .image-garden.mk file is more recent than
|
||||
# the image itself. In reality all you need is touch(1), but this is more apt.
|
||||
unused=1
|
||||
|
||||
# This is the cloud-init user-data profile for all Debian systems. Note that it
|
||||
# is an extension of the default profile necessary for operation of
|
||||
# image-garden.
|
||||
@@ -36,6 +41,12 @@ packages:
|
||||
- python3-ttkthemes
|
||||
- swig
|
||||
- toybox
|
||||
# Update all the packages. This allows us to be on the up-to-date kernel
|
||||
# version that we cannot otherwise easily select with cloud init alone. Note
|
||||
# that we do not need to reboot the system as image garden shuts down the image
|
||||
# after first boot. On subsequent boot we will be running the latest kernel.
|
||||
package_upgrade: true
|
||||
package_update: true
|
||||
endef
|
||||
|
||||
# Ubuntu shares cloud-init profile with Debian.
|
||||
@@ -78,6 +89,10 @@ packages:
|
||||
- python311
|
||||
- python311-devel
|
||||
- swig
|
||||
- which
|
||||
# See above for rationale.
|
||||
package_upgrade: true
|
||||
package_update: true
|
||||
endef
|
||||
|
||||
define FEDORA_CLOUD_INIT_USER_DATA_TEMPLATE
|
||||
@@ -107,4 +122,7 @@ packages:
|
||||
- python3-notify2
|
||||
- python3-tkinter
|
||||
- swig
|
||||
# See above for rationale.
|
||||
package_upgrade: true
|
||||
package_update: true
|
||||
endef
|
||||
|
42
README.md
42
README.md
@@ -111,21 +111,13 @@ $ export PYTHON_VERSION=3
|
||||
$ export PYTHON_VERSIONS=python3
|
||||
```
|
||||
|
||||
Note that, in general, the build steps can be run in parallel, while the test
|
||||
steps do not gain much speedup from being run in parallel. This is because the
|
||||
test steps spawn a handful of long-lived test runner processes that mostly
|
||||
run their tests sequentially and do not use `make`'s jobserver. Moreover,
|
||||
process spawning overhead constitutes a significant part of test runtime, so
|
||||
reworking the test harnesses to add parallelism (which would be a major undertaking
|
||||
for the harnesses that do not have it already) would not produce much of a speedup.
|
||||
|
||||
### libapparmor:
|
||||
|
||||
```
|
||||
$ cd ./libraries/libapparmor
|
||||
$ sh ./autogen.sh
|
||||
$ sh ./configure --prefix=/usr --with-perl --with-python # see below
|
||||
$ make -j $(nproc)
|
||||
$ make
|
||||
$ make check
|
||||
$ make install
|
||||
```
|
||||
@@ -138,7 +130,7 @@ generate Ruby bindings to libapparmor.]
|
||||
|
||||
```
|
||||
$ cd binutils
|
||||
$ make -j $(nproc)
|
||||
$ make
|
||||
$ make check
|
||||
$ make install
|
||||
```
|
||||
@@ -147,8 +139,7 @@ $ make install
|
||||
|
||||
```
|
||||
$ cd parser
|
||||
$ make -j $(nproc) # depends on libapparmor having been built first
|
||||
$ make -j $(nproc) tst_binaries # a build step of make check that can be parallelized
|
||||
$ make # depends on libapparmor having been built first
|
||||
$ make check
|
||||
$ make install
|
||||
```
|
||||
@@ -158,7 +149,7 @@ $ make install
|
||||
|
||||
```
|
||||
$ cd utils
|
||||
$ make -j $(nproc)
|
||||
$ make
|
||||
$ make check PYFLAKES=/usr/bin/pyflakes3
|
||||
$ make install
|
||||
```
|
||||
@@ -167,7 +158,7 @@ $ make install
|
||||
|
||||
```
|
||||
$ cd changehat/mod_apparmor
|
||||
$ make -j $(nproc) # depends on libapparmor having been built first
|
||||
$ make # depends on libapparmor having been built first
|
||||
$ make install
|
||||
```
|
||||
|
||||
@@ -176,7 +167,7 @@ $ make install
|
||||
|
||||
```
|
||||
$ cd changehat/pam_apparmor
|
||||
$ make -j $(nproc) # depends on libapparmor having been built first
|
||||
$ make # depends on libapparmor having been built first
|
||||
$ make install
|
||||
```
|
||||
|
||||
@@ -214,6 +205,18 @@ in an ephemeral virtual machine. This allows testing in isolation from the
|
||||
host, as well as testing across different commonly used distributions and their
|
||||
real kernels.
|
||||
|
||||
Image Garden is available as a snap. If you wish to use it this way then snap
|
||||
then install the snap with:
|
||||
|
||||
```sh
|
||||
sudo snap install image-garden
|
||||
```
|
||||
|
||||
If you need to install snapd first, see https://snapcraft.io/docs/installing-snapd
|
||||
|
||||
Alternatively you may build image-garden and spread from source, and install
|
||||
dependencies manually.
|
||||
|
||||
```sh
|
||||
sudo apt install git golang whois ovmf genisoimage qemu-utils qemu-system
|
||||
go install github.com/snapcore/spread/cmd/spread@latest
|
||||
@@ -227,8 +230,9 @@ git clean -xdf
|
||||
# or ~/go/bin/spread -v garden:ubuntu-cloud-24.04:tests/regression/apparmor:at_secure
|
||||
```
|
||||
|
||||
Running the `run_spread.sh` script, with `spread` on `PATH` will run all the
|
||||
tests across several supported systems (Debian, Ubuntu and openSUSE).
|
||||
Running the `run_spread.sh` script, with `image-garden` snap installed or with
|
||||
`spread` on `PATH` will run all the tests across several supported systems
|
||||
(Debian, Ubuntu and openSUSE).
|
||||
|
||||
If you include a `bzImage` file in the root of the repository then that kernel
|
||||
will be used in the integration test. Please look at `spread.yaml` for details.
|
||||
@@ -243,7 +247,7 @@ To run:
|
||||
### Regression tests - using apparmor userspace installed on host
|
||||
```
|
||||
$ cd tests/regression/apparmor (requires root)
|
||||
$ make -j $(nproc) USE_SYSTEM=1
|
||||
$ make USE_SYSTEM=1
|
||||
$ sudo make tests USE_SYSTEM=1
|
||||
$ sudo bash open.sh -r # runs and saves the last testcase from open.sh
|
||||
```
|
||||
@@ -256,7 +260,7 @@ $ sudo bash open.sh -r # runs and saves the last testcase from open.sh
|
||||
|
||||
```
|
||||
$ cd tests/regression/apparmor (requires root)
|
||||
$ make -j $(nproc)
|
||||
$ make
|
||||
$ sudo make tests
|
||||
$ sudo bash open.sh -r # runs and saves the last testcase from open.sh
|
||||
```
|
||||
|
@@ -80,6 +80,109 @@ aa-exec.
|
||||
|
||||
=back
|
||||
|
||||
=head1 RESTRICTIONS
|
||||
|
||||
aa-exec uses I<aa_change_profile(3)> to change application confinement.
|
||||
The use of I<aa_change_profile(3)> may be restricted by policy in ways
|
||||
that will cause failure or results different than expected.
|
||||
|
||||
Even when using I<aa-exec> from unconfined restrictions in policy can
|
||||
causes failure or the confinement entered to be different than requested
|
||||
|
||||
See the unpriviled unconfined restriction documentation for more detail.
|
||||
https://gitlab.com/apparmor/apparmor/-/wikis/unprivileged_unconfined_restriction
|
||||
|
||||
=head1 STACKING
|
||||
|
||||
aa-exec can be used to setup a stack of profiles as confinement. When an
|
||||
application is confined by a stack, all profiles in the stack are checked
|
||||
as if they were the profile confining the application. The resulting
|
||||
mediation is the intersection of what is allowed by each profile in the
|
||||
stack.
|
||||
|
||||
The profiles in a stack are treated independently. Each profile can have
|
||||
its own flags and profile transitions. During an exec each profile gets
|
||||
to specify its transition and the results brought together to form a
|
||||
new canonicalized stack.
|
||||
|
||||
The profile separator indicating a stack is the character sequence I<//&>.
|
||||
Thus a stack can be expressed using
|
||||
|
||||
=over 4
|
||||
|
||||
$ aa-exec -p "unconfined//&firefox" -- bash
|
||||
$ ps -Z
|
||||
LABEL PID TTY TIME CMD
|
||||
unconfined 30714 pts/12 00:00:00 bash
|
||||
firefox//&unconfined (unconfined) 31160 pts/12 00:00:00 bash
|
||||
firefox//&unconfined (unconfined) 31171 pts/12 00:00:00 ps
|
||||
|
||||
=back
|
||||
|
||||
=head1 NAMESPACES
|
||||
|
||||
aa-exec can be used to enter confinement in another policy namespace
|
||||
if the policy namespaces exists, is visible, and the profile exists in
|
||||
the namespace. Note applications launched within the namespace will
|
||||
not be able to exit the namespace, and may be restricted by additional
|
||||
confinement around namespacing. Files and resources visible to the
|
||||
parent that launches the application may not be visible in the policy
|
||||
namespace resulting in access denials.
|
||||
|
||||
To enter a policy namespace the profile is prefixed with the namespace's
|
||||
name, using a I<:> prefix and suffix.
|
||||
|
||||
Eg.
|
||||
|
||||
=over 4
|
||||
|
||||
$ aa-exec -p :ex1:unconfined -- bash
|
||||
$ ps -Z
|
||||
LABEL PID TTY TIME CMD
|
||||
- 30714 pts/12 00:00:00 bash
|
||||
unconfined 34372 pts/12 00:00:00 bash
|
||||
unconfined 34379 pts/12 00:00:00 ps
|
||||
|
||||
=back
|
||||
|
||||
Confinement of processes outside of the namespace may not be visible
|
||||
in which case the confinement will be represented with a -. If policy
|
||||
is stacked only part of the confinement might be visible. However
|
||||
confinement is usually fully visible from the parent policy namespace.
|
||||
|
||||
Eg. the confinement of the child can be queried in the parent to see
|
||||
|
||||
=over 4
|
||||
|
||||
$ ps -Z 34372
|
||||
LABEL PID TTY STAT TIME COMMAND
|
||||
:ex1:unconfined 34372 pts/12 S+ 0:00 bash
|
||||
|
||||
=back
|
||||
|
||||
And in the case of stacking with namespaces
|
||||
|
||||
=over 4
|
||||
|
||||
$ aa-exec -p "unconfined//&:ex1:unconfined" -- bash
|
||||
$ ps -Z
|
||||
LABEL PID TTY TIME CMD
|
||||
- 30714 pts/12 00:00:00 bash
|
||||
unconfined 36298 pts/12 00:00:00 bash
|
||||
unconfined 36305 pts/12 00:00:00 ps
|
||||
|
||||
=back
|
||||
|
||||
while from the parent namespace the full confinement can be seen
|
||||
|
||||
=over 4
|
||||
|
||||
$ ps -Z 36298
|
||||
LABEL PID TTY STAT TIME COMMAND
|
||||
unconfined//&:ex1:unconfined 36298 pts/12 S+ 0:00 bash
|
||||
|
||||
=back
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
If you find any bugs, please report them at
|
||||
@@ -87,7 +190,7 @@ L<https://gitlab.com/apparmor/apparmor/-/issues>
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
aa-stack(8), aa-namespace(8), apparmor(7), apparmor.d(5), aa_change_profile(3),
|
||||
apparmor(7), apparmor.d(5), aa_change_profile(3),
|
||||
aa_change_onexec(3) and L<https://wiki.apparmor.net>.
|
||||
|
||||
=cut
|
||||
|
@@ -117,13 +117,13 @@ display only counts for selected information.
|
||||
=item --filter.mode=filter
|
||||
|
||||
Allows specifying a posix regular expression filter that will be
|
||||
applied against the displayed processess and profiles apparmor profile
|
||||
applied against the displayed processes and profiles apparmor profile
|
||||
mode, reducing the output.
|
||||
|
||||
=item --filter.profiles=filter
|
||||
|
||||
Allows specifying a posix regular expression filter that will be
|
||||
applied against the displayed processess and profiles confining
|
||||
applied against the displayed processes and profiles confining
|
||||
profile, reducing the output.
|
||||
|
||||
=item --filter.pid=filter
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
@@ -20,8 +20,6 @@
|
||||
#include <ctype.h>
|
||||
#include <dirent.h>
|
||||
#include <regex.h>
|
||||
#include <libintl.h>
|
||||
#define _(s) gettext(s)
|
||||
|
||||
#include <sys/apparmor.h>
|
||||
#include <sys/apparmor_private.h>
|
||||
@@ -133,7 +131,7 @@ const char *process_statuses[] = {"enforce", "complain", "prompt", "kill", "unco
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
if (!quiet) \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
fprintf(stderr, __VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define dprintf(...) \
|
||||
@@ -158,14 +156,14 @@ static int open_profiles(FILE **fp)
|
||||
|
||||
ret = stat("/sys/module/apparmor", &st);
|
||||
if (ret != 0) {
|
||||
eprintf(_("apparmor not present.\n"));
|
||||
eprintf("apparmor not present.\n");
|
||||
return AA_EXIT_DISABLED;
|
||||
}
|
||||
dprintf(_("apparmor module is loaded.\n"));
|
||||
dprintf("apparmor module is loaded.\n");
|
||||
|
||||
ret = aa_find_mountpoint(&apparmorfs);
|
||||
if (ret == -1) {
|
||||
eprintf(_("apparmor filesystem is not mounted.\n"));
|
||||
eprintf("apparmor filesystem is not mounted.\n");
|
||||
return AA_EXIT_NO_CONTROL;
|
||||
}
|
||||
|
||||
@@ -178,9 +176,9 @@ static int open_profiles(FILE **fp)
|
||||
*fp = fopen(apparmor_profiles, "r");
|
||||
if (*fp == NULL) {
|
||||
if (errno == EACCES) {
|
||||
eprintf(_("You do not have enough privilege to read the profile set.\n"));
|
||||
eprintf("You do not have enough privilege to read the profile set.\n");
|
||||
} else {
|
||||
eprintf(_("Could not open %s: %s"), apparmor_profiles, strerror(errno));
|
||||
eprintf("Could not open %s: %s", apparmor_profiles, strerror(errno));
|
||||
}
|
||||
return AA_EXIT_NO_PERM;
|
||||
}
|
||||
@@ -353,7 +351,7 @@ static int get_processes(struct profile *profiles,
|
||||
continue;
|
||||
} else if (rc == -1 ||
|
||||
asprintf(&exe, "/proc/%s/exe", entry->d_name) == -1) {
|
||||
eprintf(_("ERROR: Failed to allocate memory\n"));
|
||||
eprintf("ERROR: Failed to allocate memory\n");
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto exit;
|
||||
} else if (mode) {
|
||||
@@ -376,7 +374,7 @@ static int get_processes(struct profile *profiles,
|
||||
// ensure enough space for NUL terminator
|
||||
real_exe = calloc(PATH_MAX + 1, sizeof(char));
|
||||
if (real_exe == NULL) {
|
||||
eprintf(_("ERROR: Failed to allocate memory\n"));
|
||||
eprintf("ERROR: Failed to allocate memory\n");
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto exit;
|
||||
}
|
||||
@@ -600,7 +598,7 @@ static int detailed_profiles(FILE *outf, filters_t *filters, bool json,
|
||||
*/
|
||||
subfilters.mode = &mode_filter;
|
||||
if (regcomp(&mode_filter, profile_statuses[i], REG_NOSUB) != 0) {
|
||||
eprintf(_("Error: failed to compile sub filter '%s'\n"),
|
||||
eprintf("Error: failed to compile sub filter '%s'\n",
|
||||
profile_statuses[i]);
|
||||
return AA_EXIT_INTERNAL_ERROR;
|
||||
}
|
||||
@@ -666,7 +664,7 @@ static int detailed_processes(FILE *outf, filters_t *filters, bool json,
|
||||
*/
|
||||
subfilters.mode = &mode_filter;
|
||||
if (regcomp(&mode_filter, process_statuses[i], REG_NOSUB) != 0) {
|
||||
eprintf(_("Error: failed to compile sub filter '%s'\n"),
|
||||
eprintf("Error: failed to compile sub filter '%s'\n",
|
||||
profile_statuses[i]);
|
||||
return AA_EXIT_INTERNAL_ERROR;
|
||||
}
|
||||
@@ -728,7 +726,7 @@ exit:
|
||||
|
||||
static int print_legacy(const char *command)
|
||||
{
|
||||
printf(_("Usage: %s [OPTIONS]\n"
|
||||
printf("Usage: %s [OPTIONS]\n"
|
||||
"Legacy options and their equivalent command\n"
|
||||
" --profiled --count --profiles\n"
|
||||
" --enforced --count --profiles --mode=enforced\n"
|
||||
@@ -736,8 +734,8 @@ static int print_legacy(const char *command)
|
||||
" --kill --count --profiles --mode=kill\n"
|
||||
" --prompt --count --profiles --mode=prompt\n"
|
||||
" --special-unconfined --count --profiles --mode=unconfined\n"
|
||||
" --process-mixed --count --ps --mode=mixed\n"),
|
||||
command);
|
||||
" --process-mixed --count --ps --mode=mixed\n",
|
||||
command);
|
||||
|
||||
exit(0);
|
||||
return 0;
|
||||
@@ -747,7 +745,7 @@ static int usage_filters(void)
|
||||
{
|
||||
long unsigned int i;
|
||||
|
||||
printf(_("Usage of filters\n"
|
||||
printf("Usage of filters\n"
|
||||
"Filters are used to reduce the output of information to only\n"
|
||||
"those entries that will match the filter. Filters use posix\n"
|
||||
"regular expression syntax. The possible values for exes that\n"
|
||||
@@ -757,7 +755,7 @@ static int usage_filters(void)
|
||||
" --filter.profiles: regular expression to match displayed profile names\n"
|
||||
" --filter.pid: regular expression to match displayed processes pids\n"
|
||||
" --filter.exe: regular expression to match executable\n"
|
||||
));
|
||||
);
|
||||
for (i = 0; i < ARRAY_SIZE(process_statuses); i++) {
|
||||
printf("%s%s", i ? ", " : "", process_statuses[i]);
|
||||
}
|
||||
@@ -775,7 +773,7 @@ static int print_usage(const char *command, bool error)
|
||||
status = EXIT_FAILURE;
|
||||
}
|
||||
|
||||
printf(_("Usage: %s [OPTIONS]\n"
|
||||
printf("Usage: %s [OPTIONS]\n"
|
||||
"Displays various information about the currently loaded AppArmor policy.\n"
|
||||
"Default if no options given\n"
|
||||
" --show=all\n\n"
|
||||
@@ -792,8 +790,8 @@ static int print_usage(const char *command, bool error)
|
||||
" --verbose (default) displays data points about loaded policy set\n"
|
||||
" --quiet don't output error messages\n"
|
||||
" -h[(legacy|filters)] this message, or info on the specified option\n"
|
||||
" --help[=(legacy|filters)] this message, or info on the specified option\n"),
|
||||
command);
|
||||
" --help[=(legacy|filters)] this message, or info on the specified option\n",
|
||||
command);
|
||||
|
||||
exit(status);
|
||||
|
||||
@@ -869,7 +867,7 @@ static int parse_args(int argc, char **argv)
|
||||
} else if (strcmp(optarg, "filters") == 0) {
|
||||
usage_filters();
|
||||
} else {
|
||||
eprintf(_("Error: Invalid --help option '%s'.\n"), optarg);
|
||||
eprintf("Error: Invalid --help option '%s'.\n", optarg);
|
||||
print_usage(argv[0], true);
|
||||
break;
|
||||
}
|
||||
@@ -937,7 +935,7 @@ static int parse_args(int argc, char **argv)
|
||||
} else if (strcmp(optarg, "processes") == 0) {
|
||||
opt_show = SHOW_PROCESSES;
|
||||
} else {
|
||||
eprintf(_("Error: Invalid --show option '%s'.\n"), optarg);
|
||||
eprintf("Error: Invalid --show option '%s'.\n", optarg);
|
||||
print_usage(argv[0], true);
|
||||
break;
|
||||
}
|
||||
@@ -959,7 +957,7 @@ static int parse_args(int argc, char **argv)
|
||||
break;
|
||||
|
||||
default:
|
||||
eprintf(_("Error: Invalid command.\n"));
|
||||
eprintf("Error: Invalid command.\n");
|
||||
print_usage(argv[0], true);
|
||||
break;
|
||||
}
|
||||
@@ -984,7 +982,7 @@ int main(int argc, char **argv)
|
||||
if (argc > 1) {
|
||||
int pos = parse_args(argc, argv);
|
||||
if (pos < argc) {
|
||||
eprintf(_("Error: Unknown options.\n"));
|
||||
eprintf("Error: Unknown options.\n");
|
||||
print_usage(progname, true);
|
||||
}
|
||||
} else {
|
||||
@@ -996,24 +994,24 @@ int main(int argc, char **argv)
|
||||
|
||||
init_filters(&filters, &filter_set);
|
||||
if (regcomp(filters.mode, opt_mode, REG_NOSUB) != 0) {
|
||||
eprintf(_("Error: failed to compile mode filter '%s'\n"),
|
||||
eprintf("Error: failed to compile mode filter '%s'\n",
|
||||
opt_mode);
|
||||
return AA_EXIT_INTERNAL_ERROR;
|
||||
}
|
||||
if (regcomp(filters.profile, opt_profiles, REG_NOSUB) != 0) {
|
||||
eprintf(_("Error: failed to compile profiles filter '%s'\n"),
|
||||
eprintf("Error: failed to compile profiles filter '%s'\n",
|
||||
opt_profiles);
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto out;
|
||||
}
|
||||
if (regcomp(filters.pid, opt_pid, REG_NOSUB) != 0) {
|
||||
eprintf(_("Error: failed to compile ps filter '%s'\n"),
|
||||
eprintf("Error: failed to compile ps filter '%s'\n",
|
||||
opt_pid);
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto out;
|
||||
}
|
||||
if (regcomp(filters.exe, opt_exe, REG_NOSUB) != 0) {
|
||||
eprintf(_("Error: failed to compile exe filter '%s'\n"),
|
||||
eprintf("Error: failed to compile exe filter '%s'\n",
|
||||
opt_exe);
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto out;
|
||||
@@ -1028,7 +1026,7 @@ int main(int argc, char **argv)
|
||||
outf_save = outf;
|
||||
outf = open_memstream(&buffer, &buffer_size);
|
||||
if (!outf) {
|
||||
eprintf(_("Failed to open memstream: %m\n"));
|
||||
eprintf("Failed to open memstream: %m\n");
|
||||
return AA_EXIT_INTERNAL_ERROR;
|
||||
}
|
||||
}
|
||||
@@ -1038,8 +1036,8 @@ int main(int argc, char **argv)
|
||||
* have policy associated.
|
||||
*/
|
||||
ret = get_profiles(fp, &profiles, &nprofiles);
|
||||
if (ret != 0) {
|
||||
eprintf(_("Failed to get profiles: %d....\n"), ret);
|
||||
if (ret != 0 && !opt_json) {
|
||||
eprintf("Failed to get profiles: %d....\n", ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -1068,7 +1066,7 @@ int main(int argc, char **argv)
|
||||
|
||||
ret = get_processes(profiles, nprofiles, &processes, &nprocesses);
|
||||
if (ret != 0) {
|
||||
eprintf(_("Failed to get processes: %d....\n"), ret);
|
||||
eprintf("Failed to get processes: %d....\n", ret);
|
||||
} else if (opt_count) {
|
||||
ret = simple_filtered_process_count(outf, &filters, opt_json,
|
||||
processes, nprocesses);
|
||||
@@ -1094,14 +1092,14 @@ int main(int argc, char **argv)
|
||||
outf = outf_save;
|
||||
json = cJSON_Parse(buffer);
|
||||
if (!json) {
|
||||
eprintf(_("Failed to parse json output"));
|
||||
eprintf("Failed to parse json output");
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto out;
|
||||
}
|
||||
|
||||
pretty = cJSON_Print(json);
|
||||
if (!pretty) {
|
||||
eprintf(_("Failed to print pretty json"));
|
||||
eprintf("Failed to print pretty json");
|
||||
ret = AA_EXIT_INTERNAL_ERROR;
|
||||
goto out;
|
||||
}
|
||||
|
@@ -1,14 +1,14 @@
|
||||
# Translations for aa_enabled
|
||||
# Copyright (C) 2024 Canonical Ltd
|
||||
# This file is distributed under the same license as the AppArmor package.
|
||||
# John Johansen <john.johansen@canonical.com>, 2020.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Canonical Ltd
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n"
|
||||
"POT-Creation-Date: 2024-08-31 15:59-0700\n"
|
||||
"POT-Creation-Date: 2020-10-14 03:52-0700\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"
|
||||
|
@@ -1,14 +1,14 @@
|
||||
# Translations for aa_exec
|
||||
# Copyright (C) 2024 Canonical Ltd
|
||||
# This file is distributed under the same license as the AppArmor package.
|
||||
# John Johansen <john.johansen@canonical.com>, 2020.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Canonical Ltd
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n"
|
||||
"POT-Creation-Date: 2024-08-31 15:59-0700\n"
|
||||
"POT-Creation-Date: 2020-10-14 03:52-0700\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"
|
||||
|
@@ -1,14 +1,14 @@
|
||||
# Translations for aa_features_abi
|
||||
# Copyright (C) 2024 Canonical Ltd
|
||||
# This file is distributed under the same license as the AppArmor package.
|
||||
# John Johansen <john.johansen@canonical.com>, 2011.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Canonical Ltd
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n"
|
||||
"POT-Creation-Date: 2024-08-31 15:59-0700\n"
|
||||
"POT-Creation-Date: 2020-10-14 03:52-0700\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"
|
||||
|
@@ -1,14 +1,14 @@
|
||||
# Translations for aa_load
|
||||
# Copyright (C) 2024 Canonical Ltd
|
||||
# This file is distributed under the same license as the AppArmor package.
|
||||
# John Johansen <john.johansen@canonical.com>, 2020.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Canonical Ltd
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n"
|
||||
"POT-Creation-Date: 2024-08-31 15:59-0700\n"
|
||||
"POT-Creation-Date: 2025-02-18 07:37-0800\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"
|
||||
|
@@ -1,165 +0,0 @@
|
||||
# Translations for aa_status
|
||||
# Copyright (C) 2024 Canonical Ltd
|
||||
# This file is distributed under the same license as the AppArmor package.
|
||||
# John Johansen <john.johansen@canonical.com>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n"
|
||||
"POT-Creation-Date: 2024-08-31 17:49-0700\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"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../aa_status.c:161
|
||||
msgid "apparmor not present.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:164
|
||||
msgid "apparmor module is loaded.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:168
|
||||
msgid "apparmor filesystem is not mounted.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:181
|
||||
msgid "You do not have enough privilege to read the profile set.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:183
|
||||
#, c-format
|
||||
msgid "Could not open %s: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:356 ../aa_status.c:379
|
||||
msgid "ERROR: Failed to allocate memory\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:587 ../aa_status.c:653
|
||||
#, c-format
|
||||
msgid "Error: failed to compile sub filter '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:715
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: %s [OPTIONS]\n"
|
||||
"Legacy options and their equivalent command\n"
|
||||
" --profiled --count --profiles\n"
|
||||
" --enforced --count --profiles --mode=enforced\n"
|
||||
" --complaining --count --profiles --mode=complain\n"
|
||||
" --kill --count --profiles --mode=kill\n"
|
||||
" --prompt --count --profiles --mode=prompt\n"
|
||||
" --special-unconfined --count --profiles --mode=unconfined\n"
|
||||
" --process-mixed --count --ps --mode=mixed\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:734
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage of filters\n"
|
||||
"Filters are used to reduce the output of information to only\n"
|
||||
"those entries that will match the filter. Filters use posix\n"
|
||||
"regular expression syntax. The possible values for exes that\n"
|
||||
"support filters are below\n"
|
||||
"\n"
|
||||
" --filter.mode: regular expression to match the profile "
|
||||
"mode modes: enforce, complain, kill, unconfined, mixed\n"
|
||||
" --filter.profiles: regular expression to match displayed profile names\n"
|
||||
" --filter.pid: regular expression to match displayed processes pids\n"
|
||||
" --filter.exe: regular expression to match executable\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:762
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Usage: %s [OPTIONS]\n"
|
||||
"Displays various information about the currently loaded AppArmor policy.\n"
|
||||
"Default if no options given\n"
|
||||
" --show=all\n"
|
||||
"\n"
|
||||
"OPTIONS (one only):\n"
|
||||
" --enabled returns error code if AppArmor not enabled\n"
|
||||
" --show=X What information to show. {profiles,processes,all}\n"
|
||||
" --count print the number of entries. Implies --quiet\n"
|
||||
" --filter.mode=filter see filters\n"
|
||||
" --filter.profiles=filter see filters\n"
|
||||
" --filter.pid=filter see filters\n"
|
||||
" --filter.exe=filter see filters\n"
|
||||
" --json displays multiple data points in machine-readable JSON "
|
||||
"format\n"
|
||||
" --pretty-json same data as --json, formatted for human consumption as "
|
||||
"well\n"
|
||||
" --verbose (default) displays data points about loaded policy set\n"
|
||||
" --quiet don't output error messages\n"
|
||||
" -h[(legacy|filters)] this message, or info on the specified option\n"
|
||||
" --help[=(legacy|filters)] this message, or info on the specified option\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:856
|
||||
#, c-format
|
||||
msgid "Error: Invalid --help option '%s'.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:924
|
||||
#, c-format
|
||||
msgid "Error: Invalid --show option '%s'.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:946
|
||||
msgid "Error: Invalid command.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:971
|
||||
msgid "Error: Unknown options.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:983
|
||||
#, c-format
|
||||
msgid "Error: failed to compile mode filter '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:988
|
||||
#, c-format
|
||||
msgid "Error: failed to compile profiles filter '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:994
|
||||
#, c-format
|
||||
msgid "Error: failed to compile ps filter '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:1000
|
||||
#, c-format
|
||||
msgid "Error: failed to compile exe filter '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:1015
|
||||
#, c-format
|
||||
msgid "Failed to open memstream: %m\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:1026
|
||||
#, c-format
|
||||
msgid "Failed to get profiles: %d....\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:1050
|
||||
#, c-format
|
||||
msgid "Failed to get processes: %d....\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:1076
|
||||
msgid "Failed to parse json output"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_status.c:1083
|
||||
msgid "Failed to print pretty json"
|
||||
msgstr ""
|
67
binutils/po/be.po
Normal file
67
binutils/po/be.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Belarusian translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-05-05 21:55+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Belarusian <be@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-05-06 05:41+0000\n"
|
||||
"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
71
binutils/po/ca.po
Normal file
71
binutils/po/ca.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Catalan translation for apparmor
|
||||
# Copyright (c) 2024 Rosetta Contributors and Canonical Ltd 2024
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2024-09-14 10:17+0000\n"
|
||||
"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
|
||||
"Language-Team: Catalan <ca@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2024-09-15 07:16+0000\n"
|
||||
"X-Generator: Launchpad (build 1b1ed1ad2dbfc71ee62b5c5491c975135a771bf0)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [opcions]\n"
|
||||
" opcions:\n"
|
||||
" -q | --quiet No imprimeixis cap missatge\n"
|
||||
" -h | --help Imprimeix l'ajuda\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "opcions desconegudes o incompatibles\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "opció desconeguda «%s»\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Sí\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "No - no esta disponible a aquest sistema\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "No - desactivat a l'inici.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Potser - la interfície de política no està disponible.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Potser - permisos insuficient per determinar la disponibilitat.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Error - '%s'\n"
|
67
binutils/po/cs.po
Normal file
67
binutils/po/cs.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Czech translation for apparmor
|
||||
# Copyright (c) 2022 Rosetta Contributors and Canonical Ltd 2022
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2022-01-09 11:59+0000\n"
|
||||
"Last-Translator: Marek Hladík <mhladik@seznam.cz>\n"
|
||||
"Language-Team: Czech <cs@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2022-01-10 06:32+0000\n"
|
||||
"X-Generator: Launchpad (build 1682fd44eec4f62371f0bed122a83482daf08e23)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "neznámé nebo nekompatibilní volby\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "neznámá volba '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Ano\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "Ne - není v tomto systému k dispozici.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "Ne - zakázáno při startu.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Možná - rozhraní zásad není k dispozici.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Možná - nedostatečná oprávnění k určení dostupnosti.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Chyba - '%s'\n"
|
67
binutils/po/en_AU.po
Normal file
67
binutils/po/en_AU.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# English (Australia) translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-11-28 04:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: English (Australia) <en_AU@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-11-29 06:26+0000\n"
|
||||
"X-Generator: Launchpad (build 12d09381f8e8eee3115395875b132e165fa96574)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
67
binutils/po/en_CA.po
Normal file
67
binutils/po/en_CA.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# English (Canada) translation for apparmor
|
||||
# Copyright (c) 2021 Rosetta Contributors and Canonical Ltd 2021
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2021-10-01 04:55+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: English (Canada) <en_CA@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-10-02 06:17+0000\n"
|
||||
"X-Generator: Launchpad (build 1ce78163f6a09ed42b4201fe7d3f0e3a2eba7d02)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
71
binutils/po/et.po
Normal file
71
binutils/po/et.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Estonian translation for apparmor
|
||||
# Copyright (c) 2023 Rosetta Contributors and Canonical Ltd 2023
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2023-07-04 08:52+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Estonian <et@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2023-07-05 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build beda0e9dd2b131780db60fe479d4b43618b27243)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [valikud]\n"
|
||||
" valikud:\n"
|
||||
" -q | --quiet Ärge printige sõnumeid välja\n"
|
||||
" -h | --help Prindi abiinfo\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "tundmatud või ühildumatud valikud\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "tundmatu valik '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Jah\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "Ei – pole selles süsteemis saadaval.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "Ei – käivitamisel keelatud.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Võib-olla – poliisiliides pole saadaval.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Võib-olla - kättesaadavuse määramiseks pole piisavalt õigusi.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Viga – '%s'\n"
|
67
binutils/po/gl.po
Normal file
67
binutils/po/gl.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Galician translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-04-21 14:59+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Galician <gl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-04-22 06:10+0000\n"
|
||||
"X-Generator: Launchpad (build aad6b57d58e2f621954298e262c1cc904860f5d2)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
71
binutils/po/he.po
Normal file
71
binutils/po/he.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Hebrew translation for apparmor
|
||||
# Copyright (c) 2023 Rosetta Contributors and Canonical Ltd 2023
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2023-10-05 05:12+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2023-10-06 08:32+0000\n"
|
||||
"X-Generator: Launchpad (build bd6cfd0cfc024dbe1dcd7d5d91165fb4f6a6c596)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [אפשרויות]\n"
|
||||
" אפשרויות:\n"
|
||||
" -q | --quiet לא להציג הודעות\n"
|
||||
" -h | --help הצגת עזרה\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "אפשרויות לא ידועות או לא נתמכות\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "האפשרות ‚%s’ לא מוכרת\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "כן\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "לא - לא זמין במערכת הזאת.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "לא - מושבת בעלייה.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "אולי - מנשק המדיניות לא זמין.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "אולי - אין מספיק הרשאות לקבוע זמינות.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "שגיאה - ‚%s’\n"
|
67
binutils/po/hi.po
Normal file
67
binutils/po/hi.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Hindi translation for apparmor
|
||||
# Copyright (c) 2023 Rosetta Contributors and Canonical Ltd 2023
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2023-01-09 07:39+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Hindi <hi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2023-01-10 06:22+0000\n"
|
||||
"X-Generator: Launchpad (build 87bfee1fd14ea3245297d63eeec1e4c8a1d203a8)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
71
binutils/po/hr.po
Normal file
71
binutils/po/hr.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Croatian translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2021-10-03 10:17+0000\n"
|
||||
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
||||
"Language-Team: Croatian <hr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-10-04 06:23+0000\n"
|
||||
"X-Generator: Launchpad (build 1ce78163f6a09ed42b4201fe7d3f0e3a2eba7d02)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [mogućnosti]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Ne prikazuj poruke\n"
|
||||
" -h | --help Prikaži pomoć\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "nepoznata ili nepotpuna mogućnost\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "nepoznata mogućnost '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Da\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "Ne - nedostupno na ovom sustavu.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "Ne - onemogućeno pri pokretanju.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Možda - pravilo sučelja nedostupno.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Možda - nedovoljna dozvola za određivanje dostupnosti.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Greška - '%s'\n"
|
72
binutils/po/it.po
Normal file
72
binutils/po/it.po
Normal file
@@ -0,0 +1,72 @@
|
||||
# Italian translation for apparmor
|
||||
# Copyright (c) 2022 Rosetta Contributors and Canonical Ltd 2022
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2022-06-30 17:54+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Italian <it@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2022-07-01 04:30+0000\n"
|
||||
"X-Generator: Launchpad (build f48158886a49da429840bcd298f0c7ed60f9ad7b)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [opzioni]\n"
|
||||
" opzioni:\n"
|
||||
" -q | --quiet Non stampa nessun messaggio\n"
|
||||
" -h | --help Stampa la guida\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "opzioni sconosciute o incompatibili\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "opzione sconosciuta '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Si\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "No - non disponibile su questo sistema.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "No - disabilitato all'avvio.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Forse - interfaccia dei criteri non disponibile.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
"Forse - autorizzazioni insufficienti per determinare la disponibilità.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Errore - '%s'\n"
|
72
binutils/po/ka.po
Normal file
72
binutils/po/ka.po
Normal file
@@ -0,0 +1,72 @@
|
||||
# Georgian translation for apparmor
|
||||
# Copyright (c) 2023 Rosetta Contributors and Canonical Ltd 2023
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2023-06-26 15:06+0000\n"
|
||||
"Last-Translator: NorwayFun <temuri.doghonadze@gmail.com>\n"
|
||||
"Language-Team: Georgian <ka@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2023-06-27 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build aedf8597c50c1abc5fb7f9e871e686dfcb381fde)\n"
|
||||
"Language: aa\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [პარამეტრები]\n"
|
||||
" პარამეტრები:\n"
|
||||
" -q | --quiet შეტყობინებები გამოტანილი არ იქნება\n"
|
||||
" -h | --help დახმარების გამოტანა\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "უცნობი ან შეუთავსებელი პარამეტრები\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "უცნობი პარამეტრი \"%s\"-სთვის\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "დიახ\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "არა - მიუწვდომელია ამ სისტემაზე\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "არა - გამორთულია ჩატვირთვისას\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "შეიძლება - პოლიტიკის ინტერფეისი ხელმისაწვდომი არაა.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "შეიძლება - არასაკმარისი წვდომები ხელმისაწვდომობის დასადგენად.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "შეცდომა - \"%s\"\n"
|
67
binutils/po/kab.po
Normal file
67
binutils/po/kab.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Kabyle translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-04-29 14:31+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Kabyle <kab@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-04-30 05:44+0000\n"
|
||||
"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
73
binutils/po/my.po
Normal file
73
binutils/po/my.po
Normal file
@@ -0,0 +1,73 @@
|
||||
# Burmese translation for apparmor
|
||||
# Copyright (c) 2022 Rosetta Contributors and Canonical Ltd 2022
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2022-06-26 11:50+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Burmese <my@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2022-06-27 04:30+0000\n"
|
||||
"X-Generator: Launchpad (build 51a2e4fa2e9b8e45f00904ad7f53546f45ac48a5)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s- [options]\n"
|
||||
" ရွေးချယ်စရာများ-\n"
|
||||
" -q | --quiet မည်သည့်စာတိုကိုမှ ပရင့်မထုတ်ပါနှင့်။\n"
|
||||
" -h | --help ပရင့်အကူအညီ\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "အမည်မသိ သို့မဟုတ် သဟဇာတမဖြစ်သော ရွေးချယ်စရာများ\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "အမည်မသိရွေးချယ်မှု '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "ဟုတ်\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "မဟုတ်ပါ - ဤစနစ်တွင် မရနိုင်ပါ။\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "မဟုတ်ပါ - boot တွင် ပိတ်ထားပါသည်။\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "ဖြစ်နိုင်ပါသည် - မူဝါဒ interface ကို မရနိုင်ပါ။\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
"ဖြစ်နိုင်ပါသည် - ရရှိနိုင်မှုကို ဆုံးဖြတ်ရန်အတွက် ခွင့်ပြုချက်များမှာ "
|
||||
"လုံလောက်မှုမရှိပါ။\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "အမှား- '%s'\n"
|
67
binutils/po/oc.po
Normal file
67
binutils/po/oc.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Occitan (post 1500) translation for apparmor
|
||||
# Copyright (c) 2021 Rosetta Contributors and Canonical Ltd 2021
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2021-01-14 18:26+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Occitan (post 1500) <oc@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-01-15 07:59+0000\n"
|
||||
"X-Generator: Launchpad (build 511b4a3b6512aa3d421c5f7d74f3527e78bff26e)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
71
binutils/po/pl.po
Normal file
71
binutils/po/pl.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Polish translation for apparmor
|
||||
# Copyright (c) 2021 Rosetta Contributors and Canonical Ltd 2021
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2021-07-22 20:10+0000\n"
|
||||
"Last-Translator: Marek Adamski <Unknown>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2021-07-23 06:03+0000\n"
|
||||
"X-Generator: Launchpad (build 7edebbcd0516593cf020aaa3c59299732a7c73cc)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [opcje]\n"
|
||||
" opcje:\n"
|
||||
" -q | --quiet Nie wyświetlaj żadnych komunikatów\n"
|
||||
" -h | --help Wyświetl pomoc\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "nieznane lub niekompatybilne opcje\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "nieznana opcja '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Tak\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "Nie - nie jest dostępne w tym systemie.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "Nie - wyłączone podczas rozruchu.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Może - interfejs zasad nie jest dostępny.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Może - brak wystarczających uprawnień do określenia dostępności.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Błąd - '%s'\n"
|
71
binutils/po/pt_BR.po
Normal file
71
binutils/po/pt_BR.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Brazilian Portuguese translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-04-27 20:32+0000\n"
|
||||
"Last-Translator: Rodrigo Farias <Unknown>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-04-28 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build d1105341713c5be348effe2a5142c4a210ce4cde)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [options]\n"
|
||||
" opções:\n"
|
||||
" -q | --quiet Não imprimir nenhum mensagem\n"
|
||||
" -h | --help Assistente de impressão\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "opções incompatíveis ou desconhecidas\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "opção desconhecida '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Sim\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "Não - não disponível neste sistema.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "Não - desabilitado na inicialização.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Talvez - interface de política não disponível.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Talvez - permissões insuficientes para determinar disponibilidade.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Erro - '%s'\n"
|
@@ -1,21 +1,26 @@
|
||||
# Romanian translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# Romanian translation for apparmor, "apparmor-binutils" component.
|
||||
# Mesajele în limba română pentru pachetul „apparmor”, componenta „apparmor-binutils”.
|
||||
# Copyright © 2020 Rosetta Contributors and Canonical Ltd.
|
||||
# Copyright © 2024 Canonical Ltd.
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
# Daniel Slavu <Unknown>, feb-2020.
|
||||
# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, sep-2024.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Project-Id-Version: apparmor-binutils\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-02-20 21:47+0000\n"
|
||||
"Last-Translator: Daniel Slavu <Unknown>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"PO-Revision-Date: 2024-09-23 22:45+0000\n"
|
||||
"Last-Translator: Remus-Gabriel Chelu <Unknown>\n"
|
||||
"Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-02-21 05:39+0000\n"
|
||||
"X-Generator: Launchpad (build 19413b719a8df7423ab1390528edadce9e0e4aca)\n"
|
||||
"X-Launchpad-Export-Date: 2024-09-25 04:33+0000\n"
|
||||
"X-Generator: Launchpad (build 1b1ed1ad2dbfc71ee62b5c5491c975135a771bf0)\n"
|
||||
"Language: ro\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
@@ -27,8 +32,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"%s: [opțiuni]\n"
|
||||
" opțiuni:\n"
|
||||
" -q | --calm Nu imprima niciun mesaj\n"
|
||||
" -h | - ajutor Imprimare ajutor\n"
|
||||
" -q | --quiet nu afișează niciun mesaj\n"
|
||||
" -h | --help imprimă ajutorul\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
@@ -38,7 +43,7 @@ msgstr "opțiuni necunoscute sau incompatibile\n"
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "opțiune necunoscută '%s'\n"
|
||||
msgstr "opțiune necunoscută „%s”\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
@@ -58,7 +63,8 @@ msgstr "Nu - dezactivat la pornire.\n"
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Poate - interfața politică nu este disponibilă.\n"
|
||||
msgstr ""
|
||||
"Poate - interfața politică (de directive politice) nu este disponibilă.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
@@ -69,4 +75,4 @@ msgstr ""
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Eroare - '%s'\n"
|
||||
msgstr "Eroare - „%s”\n"
|
||||
|
67
binutils/po/sr.po
Normal file
67
binutils/po/sr.po
Normal file
@@ -0,0 +1,67 @@
|
||||
# Serbian translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-11-23 18:06+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Serbian <sr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-11-24 05:55+0000\n"
|
||||
"X-Generator: Launchpad (build c35ff22711d15549e2303ae18ae521fd91f6bf00)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr ""
|
71
binutils/po/uk.po
Normal file
71
binutils/po/uk.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Ukrainian translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-05-19 21:48+0000\n"
|
||||
"Last-Translator: Nazarii Ritter <nazariy.ritter@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <uk@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-05-20 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 0385b538081bc4718df6fb844a3afc89729c94ce)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [опції]\n"
|
||||
" опції:\n"
|
||||
" -q | --quiet Не виводити жодних повідомлень\n"
|
||||
" -h | --help Вивести довідку\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "невідомі або несумісні опції\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "невідомий параметр «%s»\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "Так\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "Ні – недоступно на цій системі.\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "Ні – вимкнено під час завантаження.\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "Можливо – інтерфейс політики недоступний.\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "Можливо – недостатньо дозволів для визначення наявності.\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "Помилка - '%s'\n"
|
71
binutils/po/zh_CN.po
Normal file
71
binutils/po/zh_CN.po
Normal file
@@ -0,0 +1,71 @@
|
||||
# Chinese (Simplified) translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2015-11-28 10:23-0800\n"
|
||||
"PO-Revision-Date: 2020-05-14 09:16+0000\n"
|
||||
"Last-Translator: 玉堂白鹤 <yjwork@qq.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-05-15 05:51+0000\n"
|
||||
"X-Generator: Launchpad (build 0385b538081bc4718df6fb844a3afc89729c94ce)\n"
|
||||
|
||||
#: ../aa_enabled.c:26
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: [options]\n"
|
||||
" options:\n"
|
||||
" -q | --quiet Don't print out any messages\n"
|
||||
" -h | --help Print help\n"
|
||||
msgstr ""
|
||||
"%s: [选项]\n"
|
||||
" 选项:\n"
|
||||
" -q | --quiet 不要打印任何消息\n"
|
||||
" -h | --help 打印帮助\n"
|
||||
|
||||
#: ../aa_enabled.c:45
|
||||
#, c-format
|
||||
msgid "unknown or incompatible options\n"
|
||||
msgstr "未知或不兼容的选项\n"
|
||||
|
||||
#: ../aa_enabled.c:55
|
||||
#, c-format
|
||||
msgid "unknown option '%s'\n"
|
||||
msgstr "未知选项 '%s'\n"
|
||||
|
||||
#: ../aa_enabled.c:64
|
||||
#, c-format
|
||||
msgid "Yes\n"
|
||||
msgstr "是\n"
|
||||
|
||||
#: ../aa_enabled.c:71
|
||||
#, c-format
|
||||
msgid "No - not available on this system.\n"
|
||||
msgstr "否 - 在此系统上不可用。\n"
|
||||
|
||||
#: ../aa_enabled.c:74
|
||||
#, c-format
|
||||
msgid "No - disabled at boot.\n"
|
||||
msgstr "否 - 引导时被禁用。\n"
|
||||
|
||||
#: ../aa_enabled.c:77
|
||||
#, c-format
|
||||
msgid "Maybe - policy interface not available.\n"
|
||||
msgstr "也许 - 策略界面不可用\n"
|
||||
|
||||
#: ../aa_enabled.c:81
|
||||
#, c-format
|
||||
msgid "Maybe - insufficient permissions to determine availability.\n"
|
||||
msgstr "也许 - 没有足够的权限确定可用性。\n"
|
||||
|
||||
#: ../aa_enabled.c:84
|
||||
#, c-format
|
||||
msgid "Error - '%s'\n"
|
||||
msgstr "错误 - '%s'\n"
|
@@ -35,14 +35,14 @@ VERSION=$(shell cat $(COMMONDIR)/Version)
|
||||
pathsearch = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
|
||||
map = $(foreach a,$(2),$(call $(1),$(a)))
|
||||
|
||||
AWK?=$(or $(shell command -v awk),$(error awk utility required for build but not available))
|
||||
AWK?=$(or $(shell which awk),$(error awk utility required for build but not available))
|
||||
|
||||
define nl
|
||||
|
||||
|
||||
endef
|
||||
|
||||
REPO_VERSION_CMD=[ -x /usr/bin/git ] && /usr/bin/git describe --tags --long --abbrev=16 --match 'v*' 2> /dev/null || awk '{ print $2 }' common/.stamp_rev
|
||||
REPO_VERSION_CMD=[ -x /usr/bin/git ] && /usr/bin/git describe --tags --long --abbrev=16 --match 'v*' 2> /dev/null || $(AWK) '{ print $2 }' common/.stamp_rev
|
||||
|
||||
ifndef PYTHON_VERSIONS
|
||||
PYTHON_VERSIONS = $(call map, pathsearch, python3)
|
||||
|
@@ -1 +1 @@
|
||||
4.1.0~beta1
|
||||
4.1.1
|
||||
|
@@ -22,15 +22,15 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
aa_change_hat - change to or from a "hat" within a AppArmor profile
|
||||
aa_change_hat - change to or from a "hat" within a AppArmor profile
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<#include E<lt>sys/apparmor.hE<gt>>
|
||||
|
||||
B<int aa_change_hat (const char *subprofile, unsigned long magic_token);>
|
||||
B<int aa_change_hat (char *subprofile, unsigned long magic_token);>
|
||||
|
||||
B<int aa_change_hatv (const char *subprofiles[], unsigned long magic_token);>
|
||||
B<int aa_change_hatv (char *subprofiles[], unsigned long magic_token);>
|
||||
|
||||
B<int aa_change_hat_vargs (unsigned long magic_token, ...);>
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
aa_change_profile, aa_change_onexec - change a task's profile
|
||||
aa_change_profile, aa_change_onexec - change a tasks profile
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
@@ -58,8 +58,8 @@ The aa_change_onexec() function is like the aa_change_profile() function
|
||||
except it specifies that the profile transition should take place on the
|
||||
next exec instead of immediately. The delayed profile change takes
|
||||
precedence over any exec transition rules within the confining profile.
|
||||
Delaying the profile boundary has a couple of advantages: it removes the
|
||||
need for stub transition profiles, and the exec boundary is a natural security
|
||||
Delaying the profile boundary has a couple of advantages, it removes the
|
||||
need for stub transition profiles and the exec boundary is a natural security
|
||||
layer where potentially sensitive memory is unmapped.
|
||||
|
||||
=head1 RETURN VALUE
|
||||
|
@@ -54,7 +54,7 @@ B<typedef struct aa_features aa_features;>
|
||||
|
||||
B<int aa_features_new(aa_features **features, int dirfd, const char *path);>
|
||||
|
||||
B<int aa_features_new_from_file(aa_features **features, int file);>
|
||||
B<int aa_features_new_from_file(aa_features **features, int fd);>
|
||||
|
||||
B<int aa_features_new_from_string(aa_features **features, const char *string, size_t size);>
|
||||
|
||||
|
@@ -58,9 +58,6 @@ appropriately.
|
||||
|
||||
=head1 ERRORS
|
||||
|
||||
# podchecker warns about duplicate link targets for EACCES, EBUSY, ENOENT,
|
||||
# and ENOMEM, but this is a warning that is safe to ignore.
|
||||
|
||||
B<aa_is_enabled>
|
||||
|
||||
=over 4
|
||||
|
@@ -41,7 +41,7 @@ result is an intersection of all profiles which are stacked. Stacking profiles
|
||||
together is desirable when wanting to ensure that confinement will never become
|
||||
more permissive. When changing between two profiles, as performed with
|
||||
aa_change_profile(2), there is always the possibility that the new profile is
|
||||
more permissive than the old profile, but that possibility is eliminated when
|
||||
more permissive than the old profile but that possibility is eliminated when
|
||||
using aa_stack_profile().
|
||||
|
||||
To stack a profile with the current confinement context, a task can use the
|
||||
@@ -68,7 +68,7 @@ The aa_stack_onexec() function is like the aa_stack_profile() function
|
||||
except it specifies that the stacking should take place on the next exec
|
||||
instead of immediately. The delayed profile change takes precedence over any
|
||||
exec transition rules within the confining profile. Delaying the stacking
|
||||
boundary has a couple of advantages: it removes the need for stub transition
|
||||
boundary has a couple of advantages, it removes the need for stub transition
|
||||
profiles and the exec boundary is a natural security layer where potentially
|
||||
sensitive memory is unmapped.
|
||||
|
||||
|
@@ -32,10 +32,10 @@ INCLUDES = $(all_includes)
|
||||
#
|
||||
# After changing the AA_LIB_* variables, also update EXPECTED_SO_NAME.
|
||||
|
||||
AA_LIB_CURRENT = 20
|
||||
AA_LIB_REVISION = 0
|
||||
AA_LIB_AGE = 19
|
||||
EXPECTED_SO_NAME = libapparmor.so.1.19.0
|
||||
AA_LIB_CURRENT = 25
|
||||
AA_LIB_REVISION = 2
|
||||
AA_LIB_AGE = 24
|
||||
EXPECTED_SO_NAME = libapparmor.so.1.24.2
|
||||
|
||||
SUFFIXES = .pc.in .pc
|
||||
|
||||
|
@@ -399,6 +399,10 @@ static bool walk_one(const char **str, const struct component *component,
|
||||
i = 0;
|
||||
|
||||
cur++;
|
||||
|
||||
/* Partial match, continue to search */
|
||||
if (i == component->len && !isbrace_space_or_nul(*cur))
|
||||
i = 0;
|
||||
}
|
||||
|
||||
/* Return false if a full match was not found */
|
||||
|
@@ -1,3 +1,3 @@
|
||||
SUBDIRS = perl python ruby
|
||||
|
||||
EXTRA_DIST = SWIG/*.i
|
||||
EXTRA_DIST = SWIG/*.i java/Makefile.am
|
||||
|
@@ -258,7 +258,13 @@ extern int aa_is_enabled(void);
|
||||
* allocation uninitialized (0) != SWIG_NEWOBJ
|
||||
*/
|
||||
%#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
||||
static_assert(SWIG_NEWOBJ != 0);
|
||||
/*
|
||||
* Some older versions of SWIG place this right after a goto label
|
||||
* This would then be a label followed by a declaration, a C23 extension (!)
|
||||
* To ensure this works for older SWIG versions and older compilers,
|
||||
* make this a block element with curly braces.
|
||||
*/
|
||||
{static_assert(SWIG_NEWOBJ != 0, "SWIG_NEWOBJ is 0");}
|
||||
%#endif
|
||||
if ($1 != NULL && alloc_tracking$argnum != NULL) {
|
||||
for (Py_ssize_t i=0; i<seq_len$argnum; i++) {
|
||||
@@ -272,6 +278,35 @@ extern int aa_is_enabled(void);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SWIGPERL
|
||||
// Copied from perl's argcargv.i, which should be good enough for us
|
||||
%typemap(in) (const char *subprofiles[]) {
|
||||
int i;
|
||||
SSize_t len;
|
||||
AV *av = (AV *)SvRV($input);
|
||||
if (SvTYPE(av) != SVt_PVAV) {
|
||||
SWIG_croak("in method '$symname', Expecting reference to argv array");
|
||||
goto fail;
|
||||
}
|
||||
len = av_len(av) + 1;
|
||||
$1 = (char **) malloc((len+1)*sizeof(char *));
|
||||
for (i = 0; i < len; i++) {
|
||||
SV **tv = av_fetch(av, i, 0);
|
||||
$1[i] = SvPV_nolen(*tv);
|
||||
}
|
||||
$1[i] = NULL;
|
||||
}
|
||||
|
||||
%typemap(typecheck, precedence=SWIG_TYPECHECK_STRING_ARRAY) (const char *subprofiles[]) {
|
||||
AV *av = (AV *)SvRV($input);
|
||||
$1 = SvTYPE(av) == SVt_PVAV;
|
||||
}
|
||||
|
||||
%typemap(freearg) (const char *subprofiles[]) {
|
||||
free((void *)$1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* These should not receive the VOID_Object typemap */
|
||||
extern int aa_change_hat(const char *subprofile, unsigned long magic_token);
|
||||
extern int aa_change_profile(const char *profile);
|
||||
@@ -315,10 +350,17 @@ extern int aa_stack_onexec(const char *profile);
|
||||
* We can't use "typedef int pid_t" because we still support systems
|
||||
* with 16-bit PIDs and SWIG can't find sys/types.h
|
||||
*
|
||||
* Capture the passed-in value as an intmax_t because pid_t is guaranteed
|
||||
* to be a signed integer
|
||||
* Capture the passed-in value as a long because pid_t is guaranteed
|
||||
* to be a signed integer and because the aalogparse struct uses
|
||||
* (unsigned) longs to store pid values. While intmax_t would be more
|
||||
* technically correct, if sizeof(pid_t) > sizeof(long) then aalogparse
|
||||
* itself would also need fixing.
|
||||
*/
|
||||
%typemap(in,noblock=1,fragment="SWIG_AsVal_long") pid_t (int conv_pid, intmax_t pid_large) {
|
||||
%typemap(in,noblock=1,fragment="SWIG_AsVal_long") pid_t (int conv_pid, long pid_large) {
|
||||
%#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
||||
static_assert(sizeof(pid_t) <= sizeof(long),
|
||||
"pid_t type is too large to be stored in a long");
|
||||
%#endif
|
||||
conv_pid = SWIG_AsVal_long($input, &pid_large);
|
||||
if (!SWIG_IsOK(conv_pid)) {
|
||||
%argument_fail(conv_pid, "pid_t", $symname, $argnum);
|
||||
@@ -328,7 +370,7 @@ extern int aa_stack_onexec(const char *profile);
|
||||
* Technically this is implementation-defined behaviour but we should be fine
|
||||
*/
|
||||
$1 = (pid_t) pid_large;
|
||||
if ((intmax_t) $1 != pid_large) {
|
||||
if ((long) $1 != pid_large) {
|
||||
SWIG_exception_fail(SWIG_OverflowError, "pid_t is too large");
|
||||
}
|
||||
}
|
||||
|
21
libraries/libapparmor/swig/java/Makefile.am
Normal file
21
libraries/libapparmor/swig/java/Makefile.am
Normal file
@@ -0,0 +1,21 @@
|
||||
WRAPPERFILES = apparmorlogparse_wrap.c
|
||||
|
||||
BUILT_SOURCES = apparmorlogparse_wrap.c
|
||||
|
||||
all-local: apparmorlogparse_wrap.o
|
||||
$(CC) -module apparmorlogparse_wrap.o -o libaalogparse.so
|
||||
|
||||
apparmorlogparse_wrap.o: apparmorlogparse_wrap.c
|
||||
$(CC) -c apparmorlogparse_wrap.c $(CFLAGS) -I../../src -I/usr/include/classpath -fno-strict-aliasing -o apparmorlogparse_wrap.o
|
||||
|
||||
clean-local:
|
||||
rm -rf org
|
||||
|
||||
apparmorlogparse_wrap.c: org/aalogparse ../SWIG/*.i
|
||||
$(SWIG) -java -I../SWIG -I../../src -outdir org/aalogparse \
|
||||
-package org.aalogparse -o apparmorlogparse_wrap.c libaalogparse.i
|
||||
|
||||
org/aalogparse:
|
||||
mkdir -p org/aalogparse
|
||||
|
||||
EXTRA_DIST = $(BUILT_SOURCES)
|
@@ -15,6 +15,7 @@ PYTHON_DIST_BUILD_PATH = '$(builddir)/../build/$$($(PYTHON) buildpath.py)'
|
||||
TESTS = test_python.py
|
||||
TESTS_ENVIRONMENT = \
|
||||
LD_LIBRARY_PATH='$(top_builddir)/src/.libs:$(PYTHON_DIST_BUILD_PATH)' \
|
||||
PYTHONPATH='$(PYTHON_DIST_BUILD_PATH)'
|
||||
PYTHONPATH='$(PYTHON_DIST_BUILD_PATH)' \
|
||||
PYTHONDONTWRITEBYTECODE='1'
|
||||
|
||||
endif
|
||||
|
@@ -1,4 +1,2 @@
|
||||
/home/cb/bin/hello.sh {
|
||||
/usr/bin/rm mrix,
|
||||
|
||||
}
|
||||
|
@@ -1,4 +1,2 @@
|
||||
/usr/bin/wireshark {
|
||||
/usr/lib64/wireshark/extcap/androiddump mrix,
|
||||
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/bin/ping {
|
||||
/bin/ping mrix,
|
||||
ping2 ix,
|
||||
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/bin/ping {
|
||||
/bin/ping mrix,
|
||||
/bin/ping ix,
|
||||
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/bin/ping {
|
||||
/bin/ping mrix,
|
||||
/bin/ping ix,
|
||||
|
||||
}
|
||||
|
@@ -1,4 +0,0 @@
|
||||
/home/steve/aa-regression-tests/link {
|
||||
/tmp/sdtest.8236-29816-IN8243/target l,
|
||||
|
||||
}
|
@@ -1,4 +1,3 @@
|
||||
/tmp/apparmor-2.8.0/tests/regression/apparmor/dbus_service {
|
||||
dbus send bus=system path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=LookupDynamicUserByName peer=(label=unconfined),
|
||||
|
||||
dbus send bus=system path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=LookupDynamicUserByName peer=( name=org.freedesktop.systemd1, label=unconfined),
|
||||
}
|
||||
|
@@ -37,7 +37,7 @@ MANPAGES=apparmor.d.5 apparmor.7 apparmor_parser.8 aa-teardown.8 apparmor_xattrs
|
||||
# default behavior changed in version 3.6
|
||||
# parse.error=verbose supported from 3.0 so just test on that
|
||||
# TODO move to autoconf
|
||||
BISON_MAJOR:=$(shell bison --version | awk '/^bison/ { print ($$NF) }' | awk -F. '{print $$1 }')
|
||||
BISON_MAJOR:=$(shell bison --version | ${AWK} '/^bison/ { print ($$NF) }' | ${AWK} -F. '{print $$1 }')
|
||||
USE_PARSE_ERROR:=$(shell test "${BISON_MAJOR}" -ge 3 && echo true)
|
||||
|
||||
YACC := bison
|
||||
@@ -375,7 +375,7 @@ tst_%: parser_%.c parser.h $(filter-out parser_%.o, ${TEST_OBJECTS})
|
||||
|
||||
errnos.h:
|
||||
echo '#include <errno.h>' > dump.c
|
||||
$(CC) -E -dD dump.c | awk '/^#define E/ { printf "{ \"%s\", %s },\n", $$2, $$2 }' > errnos.h
|
||||
$(CC) $(CPPFLAGS) -E -dD dump.c | $(AWK) '/^#define E/ { printf "{ \"%s\", %s },\n", $$2, $$2 }' > errnos.h
|
||||
rm -f dump.c
|
||||
|
||||
.SILENT: check
|
||||
|
@@ -114,7 +114,7 @@ B<XATTR VALUE FILEGLOB> = I<FILEGLOB>
|
||||
B<PROFILE FLAG CONDS> = [ 'flags=' ] '(' comma or white space separated list of I<PROFILE FLAGS> ')'
|
||||
|
||||
B<PROFILE FLAGS> = I<PROFILE MODE> | I<AUDIT_MODE> | 'mediate_deleted'
|
||||
| 'attach_disconnected' | 'attach_disconneced.path='I<ABS PATH> | 'chroot_relative'
|
||||
| 'attach_disconnected' | 'attach_disconnected.path='I<ABS PATH> | 'chroot_relative'
|
||||
| 'debug' | 'interruptible' | 'kill.signal='I<SIGNAL> | 'error='I<ERROR CODE>
|
||||
|
||||
B<ERROR CODE> = (case insensitive error code name starting with 'E'; see errno(3))
|
||||
@@ -388,7 +388,7 @@ aa_change_hat(2) can take advantage of subprofiles to run under different
|
||||
confinements, dependent on program logic. Several aa_change_hat(2)-aware
|
||||
applications exist, including an Apache module, mod_apparmor(5); a PAM
|
||||
module, pam_apparmor; and a Tomcat valve, tomcat_apparmor. Applications
|
||||
written or modified to use aa_change_profile(2) transition permanently to the
|
||||
written or modified to use change_profile(2) transition permanently to the
|
||||
specified profile. libvirt is one such application.
|
||||
|
||||
=head2 Profile Head
|
||||
@@ -604,7 +604,7 @@ modes:
|
||||
|
||||
=item B<Ux>
|
||||
|
||||
- unconfined execute -- use ld.so(8) secure-execution mode
|
||||
- unconfined execute -- scrub the environment
|
||||
|
||||
=item B<px>
|
||||
|
||||
@@ -612,7 +612,7 @@ modes:
|
||||
|
||||
=item B<Px>
|
||||
|
||||
- discrete profile execute -- use ld.so(8) secure-execution mode
|
||||
- discrete profile execute -- scrub the environment
|
||||
|
||||
=item B<cx>
|
||||
|
||||
@@ -620,7 +620,7 @@ modes:
|
||||
|
||||
=item B<Cx>
|
||||
|
||||
- transition to subprofile on execute -- use ld.so(8) secure-execution mode
|
||||
- transition to subprofile on execute -- scrub the environment
|
||||
|
||||
=item B<ix>
|
||||
|
||||
@@ -632,7 +632,7 @@ modes:
|
||||
|
||||
=item B<Pix>
|
||||
|
||||
- discrete profile execute with inherit fallback -- use ld.so(8) secure-execution mode
|
||||
- discrete profile execute with inherit fallback -- scrub the environment
|
||||
|
||||
=item B<cix>
|
||||
|
||||
@@ -640,7 +640,7 @@ modes:
|
||||
|
||||
=item B<Cix>
|
||||
|
||||
- transition to subprofile on execute with inherit fallback -- use ld.so(8) secure-execution mode
|
||||
- transition to subprofile on execute with inherit fallback -- scrub the environment
|
||||
|
||||
=item B<pux>
|
||||
|
||||
@@ -648,7 +648,7 @@ modes:
|
||||
|
||||
=item B<PUx>
|
||||
|
||||
- discrete profile execute with fallback to unconfined -- use ld.so(8) secure-execution mode
|
||||
- discrete profile execute with fallback to unconfined -- scrub the environment
|
||||
|
||||
=item B<cux>
|
||||
|
||||
@@ -656,7 +656,7 @@ modes:
|
||||
|
||||
=item B<CUx>
|
||||
|
||||
- transition to subprofile on execute with fallback to unconfined -- use ld.so(8) secure-execution mode
|
||||
- transition to subprofile on execute with fallback to unconfined -- scrub the environment
|
||||
|
||||
=item B<deny x>
|
||||
|
||||
@@ -715,20 +715,20 @@ constrained, see the apparmor(7) man page.
|
||||
|
||||
B<WARNING> 'ux' should only be used in very special cases. It enables the
|
||||
designated child processes to be run without any AppArmor protection.
|
||||
'ux' does not use ld.so(8) secure-execution mode to clear variables such as
|
||||
LD_PRELOAD; as a result, the calling domain may have an undue amount of
|
||||
influence over the callee. Use this mode only if the child absolutely must be
|
||||
'ux' does not scrub the environment of variables such as LD_PRELOAD;
|
||||
as a result, the calling domain may have an undue amount of influence
|
||||
over the callee. Use this mode only if the child absolutely must be
|
||||
run unconfined and LD_PRELOAD must be used. Any profile using this mode
|
||||
provides negligible security. Use at your own risk.
|
||||
|
||||
Incompatible with other exec transition modes and the deny qualifier.
|
||||
|
||||
=item B<Ux - unconfined execute -- use ld.so(8) secure-execution mode>
|
||||
=item B<Ux - unconfined execute -- scrub the environment>
|
||||
|
||||
'Ux' allows the named program to run in 'ux' mode, but AppArmor
|
||||
will invoke the Linux Kernel's B<unsafe_exec> routines to set ld.so(8)
|
||||
secure-execution mode and clear environment variables such as LD_PRELOAD,
|
||||
similar to setuid programs. (See ld.so(8) for more information.)
|
||||
will invoke the Linux Kernel's B<unsafe_exec> routines to scrub
|
||||
the environment, similar to setuid programs. (See ld.so(8) for some
|
||||
information on setuid/setgid environment scrubbing.)
|
||||
|
||||
B<WARNING> 'Ux' should only be used in very special cases. It enables the
|
||||
designated child processes to be run without any AppArmor protection.
|
||||
@@ -743,18 +743,18 @@ This mode requires that a discrete security profile is defined for a
|
||||
program executed and forces an AppArmor domain transition. If there is
|
||||
no profile defined then the access will be denied.
|
||||
|
||||
B<WARNING> 'px' does not use ld.so(8) secure-execution mode to clear variables
|
||||
such as LD_PRELOAD; as a result, the calling domain may have an undue amount of
|
||||
B<WARNING> 'px' does not scrub the environment of variables such as
|
||||
LD_PRELOAD; as a result, the calling domain may have an undue amount of
|
||||
influence over the callee.
|
||||
|
||||
Incompatible with other exec transition modes and the deny qualifier.
|
||||
|
||||
=item B<Px - Discrete Profile execute mode -- use ld.so(8) secure-execution mode>
|
||||
=item B<Px - Discrete Profile execute mode -- scrub the environment>
|
||||
|
||||
'Px' allows the named program to run in 'px' mode, but AppArmor
|
||||
will invoke the Linux Kernel's B<unsafe_exec> routines to set ld.so(8)
|
||||
secure-execution mode and clear environment variables such as LD_PRELOAD,
|
||||
similar to setuid programs. (See ld.so(8) for more information.)
|
||||
will invoke the Linux Kernel's B<unsafe_exec> routines to scrub
|
||||
the environment, similar to setuid programs. (See ld.so(8) for some
|
||||
information on setuid/setgid environment scrubbing.)
|
||||
|
||||
Incompatible with other exec transition modes and the deny qualifier.
|
||||
|
||||
@@ -764,18 +764,18 @@ This mode requires that a local security profile is defined and forces an
|
||||
AppArmor domain transition to the named profile. If there is no profile
|
||||
defined then the access will be denied.
|
||||
|
||||
B<WARNING> 'cx' does not use ld.so(8) secure-execution mode to clear variables
|
||||
such as LD_PRELOAD; as a result, the calling domain may have an undue amount of
|
||||
B<WARNING> 'cx' does not scrub the environment of variables such as
|
||||
LD_PRELOAD; as a result, the calling domain may have an undue amount of
|
||||
influence over the callee.
|
||||
|
||||
Incompatible with other exec transition modes and the deny qualifier.
|
||||
|
||||
=item B<Cx - Transition to Subprofile execute mode -- use ld.so(8) secure-execution mode>
|
||||
=item B<Cx - Transition to Subprofile execute mode -- scrub the environment>
|
||||
|
||||
'Cx' allows the named program to run in 'cx' mode, but AppArmor
|
||||
will invoke the Linux Kernel's B<unsafe_exec> routines to set ld.so(8)
|
||||
secure-execution mode and clear environment variables such as LD_PRELOAD,
|
||||
similar to setuid programs. (See ld.so(8) for more information.)
|
||||
will invoke the Linux Kernel's B<unsafe_exec> routines to scrub
|
||||
the environment, similar to setuid programs. (See ld.so(8) for some
|
||||
information on setuid/setgid environment scrubbing.)
|
||||
|
||||
Incompatible with other exec transition modes and the deny qualifier.
|
||||
|
||||
@@ -788,7 +788,7 @@ will inherit the current profile.
|
||||
This mode is useful when a confined program needs to call another
|
||||
confined program without gaining the permissions of the target's
|
||||
profile, or losing the permissions of the current profile. There is no
|
||||
version to set secure-execution mode because 'ix' executions don't change
|
||||
version to scrub the environment because 'ix' executions don't change
|
||||
privileges.
|
||||
|
||||
Incompatible with other exec transition modes and the deny qualifier.
|
||||
@@ -1690,11 +1690,11 @@ rule set. Eg.
|
||||
change_profile /bin/bash -> {new_profile1,new_profile2,new_profile3},
|
||||
|
||||
The exec mode dictates whether or not the Linux Kernel's B<unsafe_exec>
|
||||
routines should be used to set ld.so(8) secure-execution mode and clear
|
||||
environment variables such as LD_PRELOAD, similar to setuid programs.
|
||||
(See ld.so(8) for more information.) The B<safe> mode sets up secure-execution
|
||||
mode for the new application, and B<unsafe> mode disables AppArmor's
|
||||
requirement for it (the kernel and/or libc may still turn it on). An
|
||||
routines should be used to scrub the environment, similar to setuid programs.
|
||||
(See ld.so(8) for some information on setuid/setgid environment scrubbing.) The
|
||||
B<safe> mode sets up environment scrubbing to occur when the new application is
|
||||
executed and B<unsafe> mode disables AppArmor's requirement for environment
|
||||
scrubbing (the kernel and/or libc may still require environment scrubbing). An
|
||||
exec mode can only be specified when an exec condition is present.
|
||||
|
||||
change_profile safe /bin/bash -> new_profile,
|
||||
@@ -1796,6 +1796,61 @@ F</etc/apparmor.d/tunables/xdg-user-dirs.d> for B<@{XDG_*}>.
|
||||
The special B<@{profile_name}> variable is set to the profile name and may be
|
||||
used in all policy.
|
||||
|
||||
=head3 Notes on variable expansion and the / character
|
||||
|
||||
It is important to note that how AppArmor performs variable expansion
|
||||
depends on the context where a variable is used. When a variable is
|
||||
expanded it can result in a string with multiple path characters
|
||||
next to each other, in a way that is not evident when looking at
|
||||
policy.
|
||||
|
||||
Eg.
|
||||
|
||||
=over 4
|
||||
|
||||
Given the following variable definition and rule
|
||||
|
||||
@{HOME}=/home/*/
|
||||
file rw @{HOME}/*,
|
||||
|
||||
The variable expansion results in a rule of
|
||||
|
||||
file rw /home/*//*.
|
||||
|
||||
=back
|
||||
|
||||
When this occurs in a context where a path is expected, AppArmor will
|
||||
canonicalize the path by collapsing consecutive / characters into
|
||||
a single character. For the above example, this would be
|
||||
|
||||
file rw /home/*/*,
|
||||
|
||||
There is one exception to this rule, when the consecutive / characters
|
||||
are at the beginning of a path, this indicates a posix namespace
|
||||
and the characters will not be collapsed.
|
||||
|
||||
Eg.
|
||||
|
||||
=over 4
|
||||
|
||||
@{HOME}=/home/*/
|
||||
file rw /@{HOME}/*,
|
||||
|
||||
will result in an expansion of
|
||||
|
||||
file rw //home/*//*,
|
||||
|
||||
which is collapsed to
|
||||
|
||||
file rw //home/*/*,
|
||||
|
||||
Note: that the leading // in the above example is not collapsed to a
|
||||
single /. However the second // (that was also seen in the first
|
||||
example) is collapsed.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Alias rules
|
||||
|
||||
AppArmor also provides alias rules for remapping paths for site-specific
|
||||
@@ -2097,7 +2152,7 @@ An example AppArmor profile:
|
||||
/usr/lib/** r,
|
||||
/tmp/foo.pid wr,
|
||||
/tmp/foo.* lrw,
|
||||
/@{HOME}/.foo_file rw,
|
||||
@{HOME}/.foo_file rw,
|
||||
/usr/bin/baz Cx -> baz,
|
||||
|
||||
# a comment about foo's hat (subprofile), bar.
|
||||
@@ -2159,7 +2214,7 @@ negative values match when specifying one or the other. Eg, 'rw' matches when
|
||||
=head1 SEE ALSO
|
||||
|
||||
apparmor(7), apparmor_parser(8), apparmor_xattrs(7), aa-complain(1),
|
||||
aa-enforce(1), aa_change_hat(2), aa_change_profile(2), mod_apparmor(5), and
|
||||
aa-enforce(1), aa_change_hat(2), mod_apparmor(5), and
|
||||
L<https://wiki.apparmor.net>.
|
||||
|
||||
=cut
|
||||
|
@@ -206,8 +206,8 @@ which can help debugging profiles.
|
||||
=head2 Enable debug mode
|
||||
|
||||
When debug mode is enabled, AppArmor will log a few extra messages to
|
||||
dmesg (not via the audit subsystem). For example, the logs will state when
|
||||
ld.so(8) secure-execution mode has been applied in a profile transition.
|
||||
dmesg (not via the audit subsystem). For example, the logs will tell
|
||||
whether environment scrubbing has been applied.
|
||||
|
||||
To enable debug mode, run:
|
||||
|
||||
|
@@ -63,6 +63,7 @@ typedef enum capability_flags {
|
||||
} capability_flags;
|
||||
|
||||
int name_to_capability(const char *keyword);
|
||||
void capabilities_init(void);
|
||||
void __debug_capabilities(uint64_t capset, const char *name);
|
||||
bool add_cap_feature_mask(struct aa_features *features, capability_flags flags);
|
||||
void clear_cap_flag(capability_flags flags);
|
||||
|
@@ -10,199 +10,6 @@ aare_rules.{h,cc} - code to that binds parse -> expr-tree -> hfa generation
|
||||
-> chfa generation into a basic interface for converting
|
||||
rules to a runtime ready state machine.
|
||||
|
||||
Notes on the compiler pipeline order
|
||||
============================================
|
||||
|
||||
Front End: Program driver logic and policy text parsing into an
|
||||
abstract syntax tree.
|
||||
Middle Layer: Transforms and operations on the abstract syntax tree.
|
||||
Converts syntax tree into expression tree for back end.
|
||||
Back End: transforms of syntax tree, and creation of policy HFA from
|
||||
expression trees and HFAs.
|
||||
|
||||
|
||||
Basic order of the backend of the compiler pipe line and where the
|
||||
dump information occurs in the pipeline.
|
||||
|
||||
===== Front End (parse -> AST ================
|
||||
|
|
||||
v
|
||||
yyparse
|
||||
|
|
||||
+--->--+-->-+
|
||||
| |
|
||||
| +-->---- +---------------------------<-----------------------+
|
||||
| | | |
|
||||
| | v |
|
||||
| | yylex |
|
||||
| | | |
|
||||
| ^ token match |
|
||||
| | | |
|
||||
| | +----------------------------+ |
|
||||
| | | | ^
|
||||
| | v v |
|
||||
| +-<- rule match? preprocess |
|
||||
| | | |
|
||||
| early var expansion +----------+-----------+ |
|
||||
| | | | | |
|
||||
^ v v v v |
|
||||
| new rule() / new ent include variable conditional |
|
||||
| | | | | |
|
||||
| v +---->-----+----->-----+----->----+
|
||||
| new rule semantic check
|
||||
| |
|
||||
+-----<-----+
|
||||
|
|
||||
----------- | ------ End of Parse --------------------
|
||||
|
|
||||
v
|
||||
post_parse_profile semantic check
|
||||
|
|
||||
v
|
||||
post_process
|
||||
|
|
||||
v
|
||||
add implied rules()
|
||||
|
|
||||
v
|
||||
process_profile_variables()
|
||||
|
|
||||
v
|
||||
rule->expand_variables()
|
||||
|
|
||||
+--------+
|
||||
|
|
||||
v
|
||||
replace aliases (to be moved to backend rewrite)
|
||||
|
|
||||
v
|
||||
merge rules
|
||||
|
|
||||
v
|
||||
profile->merge_rules()
|
||||
|
|
||||
v
|
||||
+-->--rule->is_mergeable()
|
||||
| |
|
||||
^ v
|
||||
| add to table
|
||||
| |
|
||||
+-------+--------+
|
||||
|
|
||||
v
|
||||
sort->cmp()/oper<()
|
||||
|
|
||||
rule->merge()
|
||||
|
|
||||
+------------+
|
||||
|
|
||||
v
|
||||
process_profile_rules
|
||||
|
|
||||
v
|
||||
rule->gen_policy_re()
|
||||
|
|
||||
v
|
||||
===== Mid layer (AST -> expr tree) =================
|
||||
|
|
||||
+-> add_rule() (aare_rules.{h,cc})
|
||||
| |
|
||||
| v
|
||||
| rule parse (parse.y)
|
||||
| | |
|
||||
| | v
|
||||
| | expr tree (expr-tree.{h,cc})
|
||||
| | |
|
||||
| v |
|
||||
| unique perms | (aare_rules.{h,cc})
|
||||
| | |
|
||||
| +------ +
|
||||
| |
|
||||
| v
|
||||
| add to rules expr tree (aare_rules.{h,c})
|
||||
| |
|
||||
+------+
|
||||
|
|
||||
+------------------+
|
||||
|
|
||||
v
|
||||
create_dfablob()
|
||||
|
|
||||
v
|
||||
expr tree
|
||||
|
|
||||
v
|
||||
create_chfa() (aare_rules.cc)
|
||||
|
|
||||
v
|
||||
expr normalization (expr-tree.{h,cc})
|
||||
|
|
||||
v
|
||||
expr simplification (expr-tree.{h,c})
|
||||
|
|
||||
+- D expr-tree
|
||||
|
|
||||
+- D expr-simplified
|
||||
|
|
||||
==== Back End - Create cHFA out of expr tree and other HFAs ====
|
||||
v
|
||||
hfa creation (hfa.{h,cc})
|
||||
|
|
||||
+- D dfa-node-map
|
||||
|
|
||||
+- D dfa-uniq-perms
|
||||
|
|
||||
+- D dfa-states-initial
|
||||
|
|
||||
v
|
||||
hfa rewrite (not yet implemented)
|
||||
|
|
||||
v
|
||||
filter deny (hfa.{h,cc})
|
||||
|
|
||||
+- D dfa-states-post-filter
|
||||
|
|
||||
v
|
||||
minimization (hfa.{h,cc})
|
||||
|
|
||||
+- D dfa-minimize-partitions
|
||||
|
|
||||
+- D dfa-minimize-uniq-perms
|
||||
|
|
||||
+- D dfa-states-post-minimize
|
||||
|
|
||||
v
|
||||
unreachable state removal (hfa.{h,cc})
|
||||
|
|
||||
+- D dfa-states-post-unreachable
|
||||
|
|
||||
+- D dfa-states constructed hfa
|
||||
|
|
||||
+- D dfa-graph
|
||||
|
|
||||
v
|
||||
equivalence class construction
|
||||
|
|
||||
+- D equiv
|
||||
|
|
||||
diff encode (hfa.{h,cc})
|
||||
|
|
||||
+- D diff-encode
|
||||
|
|
||||
compute perms table
|
||||
|
|
||||
+- D compressed-dfa == perm table dump
|
||||
|
|
||||
compressed hfa (chfa.{h,cc}
|
||||
|
|
||||
+- D compressed-dfa == transition tables
|
||||
|
|
||||
+- D dfa-compressed-states - compress HFA in state form
|
||||
|
|
||||
v
|
||||
Return to Mid Layer
|
||||
|
||||
|
||||
Notes on the compress hfa file format (chfa)
|
||||
==============================================
|
||||
|
||||
|
@@ -25,8 +25,6 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@@ -594,11 +592,10 @@ void CHFA::weld_file_to_policy(CHFA &file_chfa, size_t &new_start,
|
||||
// to repeat
|
||||
assert(accept.size() == old_base_size);
|
||||
accept.resize(accept.size() + file_chfa.accept.size());
|
||||
assert(policy_perms.size() < std::numeric_limits<ssize_t>::max());
|
||||
ssize_t size = (ssize_t) policy_perms.size();
|
||||
size_t size = policy_perms.size();
|
||||
policy_perms.resize(size*2 + file_perms.size());
|
||||
// shift and double the policy perms
|
||||
for (ssize_t i = size - 1; i >= 0; i--) {
|
||||
for (size_t i = size - 1; size >= 0; i--) {
|
||||
policy_perms[i*2] = policy_perms[i];
|
||||
policy_perms[i*2 + 1] = policy_perms[i];
|
||||
}
|
||||
|
@@ -558,14 +558,6 @@ void DFA::dump_uniq_perms(const char *s)
|
||||
//TODO: add prompt
|
||||
}
|
||||
|
||||
// make sure work_queue and reachable insertion are always done together
|
||||
static void push_reachable(set<State *> &reachable, list<State *> &work_queue,
|
||||
State *state)
|
||||
{
|
||||
work_queue.push_back(state);
|
||||
reachable.insert(state);
|
||||
}
|
||||
|
||||
/* Remove dead or unreachable states */
|
||||
void DFA::remove_unreachable(optflags const &opts)
|
||||
{
|
||||
@@ -573,18 +565,19 @@ void DFA::remove_unreachable(optflags const &opts)
|
||||
|
||||
/* find the set of reachable states */
|
||||
reachable.insert(nonmatching);
|
||||
push_reachable(reachable, work_queue, start);
|
||||
work_queue.push_back(start);
|
||||
while (!work_queue.empty()) {
|
||||
State *from = work_queue.front();
|
||||
work_queue.pop_front();
|
||||
reachable.insert(from);
|
||||
|
||||
if (from->otherwise != nonmatching &&
|
||||
reachable.find(from->otherwise) == reachable.end())
|
||||
push_reachable(reachable, work_queue, from->otherwise);
|
||||
work_queue.push_back(from->otherwise);
|
||||
|
||||
for (StateTrans::iterator j = from->trans.begin(); j != from->trans.end(); j++) {
|
||||
if (reachable.find(j->second) == reachable.end())
|
||||
push_reachable(reachable, work_queue, j->second);
|
||||
work_queue.push_back(j->second);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1398,9 +1391,31 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
MatchFlag *match, perms_t &perms, perms_t &exact,
|
||||
bool filedfa)
|
||||
{
|
||||
if (priority[i] > match->priority) {
|
||||
// scaling priority *4
|
||||
int pri = match->priority<<2;
|
||||
|
||||
/* use priority to get proper ordering and application of the type
|
||||
* of match flag.
|
||||
*
|
||||
* Note: this is the last use of priority, it is dropped and not
|
||||
* used in the backend.
|
||||
*/
|
||||
if (match->is_type(NODE_TYPE_DENYMATCHFLAG))
|
||||
pri += 3;
|
||||
// exact match must be same priority as allow as its audit
|
||||
// flags has the same priority.
|
||||
// current no ALLOWMATCHFLAG it is just absence of other flags
|
||||
// so it has to be second last in this list, using !last
|
||||
// until this gets fixed
|
||||
else if (match->is_type(NODE_TYPE_EXACTMATCHFLAG) ||
|
||||
(!match->is_type(NODE_TYPE_PROMPTMATCHFLAG)))
|
||||
pri += 2;
|
||||
else if (match->is_type(NODE_TYPE_PROMPTMATCHFLAG))
|
||||
pri += 1;
|
||||
|
||||
if (priority[i] > pri) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " > " << match->priority << " SKIPPING " << hex << (match->perms) << "/" << (match->audit) << dec << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " > " << pri << " SKIPPING " << hex << (match->perms) << "/" << (match->audit) << dec << "\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1416,8 +1431,8 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
if (match->perms & AA_EXEC_INHERIT) {
|
||||
xmask |= AA_USER_EXEC_MMAP;
|
||||
//USER_EXEC_MAP = 6
|
||||
if (priority[6] < match->priority)
|
||||
priority[6] = match->priority;
|
||||
if (priority[6] < pri)
|
||||
priority[6] = pri;
|
||||
}
|
||||
amask = mask | xmask;
|
||||
} else if (mask & AA_OTHER_EXEC) {
|
||||
@@ -1426,8 +1441,8 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
if (match->perms & AA_OTHER_EXEC_INHERIT) {
|
||||
xmask |= AA_OTHER_EXEC_MMAP;
|
||||
//OTHER_EXEC_MAP = 20
|
||||
if (priority[20] < match->priority)
|
||||
priority[20] = match->priority;
|
||||
if (priority[20] < pri)
|
||||
priority[20] = pri;
|
||||
}
|
||||
amask = mask | xmask;
|
||||
} else if (((mask & AA_USER_EXEC_MMAP) &&
|
||||
@@ -1436,17 +1451,17 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
(match->perms & AA_OTHER_EXEC_INHERIT))) {
|
||||
// if exec && ix we handled mmp above
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " SKIPPING mmap unmasked " << hex << match->perms << "/" << match->audit << " masked " << (match->perms & amask) << "/" << (match->audit & amask) << " data " << (perms.allow & mask) << "/" << (perms.audit & mask) << " exact " << (exact.allow & mask) << "/" << (exact.audit & mask) << dec << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " SKIPPING mmap unmasked " << hex << match->perms << "/" << match->audit << " masked " << (match->perms & amask) << "/" << (match->audit & amask) << " data " << (perms.allow & mask) << "/" << (perms.audit & mask) << " exact " << (exact.allow & mask) << "/" << (exact.audit & mask) << dec << "\n";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " vs. " << match->priority << " mask: " << hex << mask << " xmask: " << xmask << " amask: " << amask << dec << "\n";
|
||||
if (priority[i] < match->priority) {
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " vs. " << pri << " mask: " << hex << mask << " xmask: " << xmask << " amask: " << amask << dec << "\n";
|
||||
if (priority[i] < pri) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " < " << match->priority << " clearing " << hex << (perms.allow & amask) << "/" << (perms.audit & amask) << " -> " << dec;
|
||||
priority[i] = match->priority;
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " < " << pri << " clearing " << hex << (perms.allow & amask) << "/" << (perms.audit & amask) << " -> " << dec;
|
||||
priority[i] = pri;
|
||||
perms.clear_bits(amask);
|
||||
exact.clear_bits(amask);
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
@@ -1456,7 +1471,7 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
// the if conditions in order of permission priority
|
||||
if (match->is_type(NODE_TYPE_DENYMATCHFLAG)) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " deny " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " deny " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
perms.deny |= match->perms & amask;
|
||||
perms.quiet |= match->audit & amask;
|
||||
|
||||
@@ -1466,11 +1481,11 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
} else if (match->is_type(NODE_TYPE_EXACTMATCHFLAG)) {
|
||||
/* exact match only asserts dominance on the XTYPE */
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " exact " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " exact " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
if (filedfa &&
|
||||
!is_merged_x_consistent(exact.allow, match->perms & amask)) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " exact match conflict" << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " exact match conflict" << "\n";
|
||||
return 1;
|
||||
}
|
||||
exact.allow |= match->perms & amask;
|
||||
@@ -1491,11 +1506,11 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
// allow perms, if exact has been encountered will already be set
|
||||
// if overlaps x here, don't conflict, because exact will override
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " allow " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " allow " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
if (filedfa && !(exact.allow & mask) &&
|
||||
!is_merged_x_consistent(perms.allow, match->perms & amask)) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " allow match conflict" << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " allow match conflict" << "\n";
|
||||
return 1;
|
||||
}
|
||||
// mask off if XTYPE in xmatch
|
||||
@@ -1509,11 +1524,11 @@ static int pri_update_perm(optflags const &opts, vector<int> &priority, int i,
|
||||
}
|
||||
} else { // if (match->is_type(NODE_TYPE_PROMPTMATCHFLAG)) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " promt " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " prompt " << hex << (match->perms & amask) << "/" << (match->audit & amask) << dec << "\n";
|
||||
if (filedfa && !((exact.allow | perms.allow) & mask) &&
|
||||
!is_merged_x_consistent(perms.allow, match->perms & amask)) {
|
||||
if (opts.dump & DUMP_DFA_PERMS)
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << match->priority << " prompt match conflict" << "\n";
|
||||
cerr << " " << match << "[" << i << "]=" << priority[i] << " <= " << pri << " prompt match conflict" << "\n";
|
||||
return 1;
|
||||
}
|
||||
if ((exact.allow | exact.audit | perms.allow | perms.audit) & mask) {
|
||||
@@ -1539,9 +1554,8 @@ int accept_perms(optflags const &opts, NodeVec *state, perms_t &perms,
|
||||
{
|
||||
int error = 0;
|
||||
perms_t exact;
|
||||
// size of vector needs to be number of bits in the data type
|
||||
// being used for the permission set.
|
||||
std::vector<int> priority(sizeof(perm32_t)*8, MIN_INTERNAL_PRIORITY);
|
||||
// scaling priority by *4
|
||||
std::vector<int> priority(sizeof(perm32_t)*8, MIN_INTERNAL_PRIORITY<<2); // 32 but wan't tied to perm32_t
|
||||
perms.clear();
|
||||
|
||||
if (!state)
|
||||
|
@@ -275,7 +275,7 @@ public:
|
||||
|
||||
ostream &dump(ostream &os)
|
||||
{
|
||||
os << *this << "\n";
|
||||
cerr << *this << "\n";
|
||||
for (StateTrans::iterator i = trans.begin(); i != trans.end(); i++) {
|
||||
os << " " << i->first.c << " -> " << *i->second << "\n";
|
||||
}
|
||||
|
@@ -288,7 +288,7 @@ static struct mnt_keyword_table mnt_opts_table[] = {
|
||||
{"make-rshared", MS_RSHARED, 0},
|
||||
|
||||
{"relatime", MS_RELATIME, 0},
|
||||
{"norelatime", 0, MS_NORELATIME},
|
||||
{"norelatime", 0, MS_RELATIME},
|
||||
{"iversion", MS_IVERSION, 0},
|
||||
{"noiversion", 0, MS_IVERSION},
|
||||
{"strictatime", MS_STRICTATIME, 0},
|
||||
@@ -355,8 +355,7 @@ int is_valid_mnt_cond(const char *name, int src)
|
||||
static unsigned int extract_flags(struct value_list **list, unsigned int *inv)
|
||||
{
|
||||
unsigned int flags = 0, invflags = 0;
|
||||
if (inv)
|
||||
*inv = 0;
|
||||
*inv = 0;
|
||||
|
||||
struct value_list *entry, *tmp, *prev = NULL;
|
||||
list_for_each_safe(*list, entry, tmp) {
|
||||
@@ -369,7 +368,11 @@ static unsigned int extract_flags(struct value_list **list, unsigned int *inv)
|
||||
" => req: 0x%x inv: 0x%x\n",
|
||||
entry->value, mnt_opts_table[i].set,
|
||||
mnt_opts_table[i].clear, flags, invflags);
|
||||
list_remove_at(*list, prev, entry);
|
||||
if (prev)
|
||||
prev->next = tmp;
|
||||
if (entry == *list)
|
||||
*list = tmp;
|
||||
entry->next = NULL;
|
||||
free_value_list(entry);
|
||||
} else
|
||||
prev = entry;
|
||||
@@ -680,7 +683,7 @@ int mnt_rule::cmp(rule_t const &rhs) const {
|
||||
return cmp_vec_int(opt_flagsv, rhs_mnt.opt_flagsv);
|
||||
}
|
||||
|
||||
static bool build_mnt_flags(char *buffer, int size, unsigned int flags,
|
||||
static int build_mnt_flags(char *buffer, int size, unsigned int flags,
|
||||
unsigned int opt_flags)
|
||||
{
|
||||
char *p = buffer;
|
||||
@@ -690,8 +693,8 @@ static bool build_mnt_flags(char *buffer, int size, unsigned int flags,
|
||||
/* all flags are optional */
|
||||
len = snprintf(p, size, "%s", default_match_pattern);
|
||||
if (len < 0 || len >= size)
|
||||
return false;
|
||||
return true;
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
for (i = 0; i <= 31; ++i) {
|
||||
if ((opt_flags) & (1 << i))
|
||||
@@ -702,7 +705,7 @@ static bool build_mnt_flags(char *buffer, int size, unsigned int flags,
|
||||
continue;
|
||||
|
||||
if (len < 0 || len >= size)
|
||||
return false;
|
||||
return FALSE;
|
||||
p += len;
|
||||
size -= len;
|
||||
}
|
||||
@@ -713,15 +716,15 @@ static bool build_mnt_flags(char *buffer, int size, unsigned int flags,
|
||||
* like the empty string
|
||||
*/
|
||||
if (size < 9)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
strcpy(p, "(\\xfe|)");
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool build_mnt_opts(std::string& buffer, struct value_list *opts)
|
||||
static int build_mnt_opts(std::string& buffer, struct value_list *opts)
|
||||
{
|
||||
struct value_list *ent;
|
||||
pattern_t ptype;
|
||||
@@ -729,19 +732,19 @@ static bool build_mnt_opts(std::string& buffer, struct value_list *opts)
|
||||
|
||||
if (!opts) {
|
||||
buffer.append(default_match_pattern);
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
list_for_each(opts, ent) {
|
||||
ptype = convert_aaregex_to_pcre(ent->value, 0, glob_default, buffer, &pos);
|
||||
if (ptype == ePatternInvalid)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
if (ent->next)
|
||||
buffer.append(",");
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void mnt_rule::warn_once(const char *name)
|
||||
@@ -844,8 +847,12 @@ int mnt_rule::gen_policy_bind_mount(Profile &prof, int &count,
|
||||
if (!convert_entry(mntbuf, mnt_point))
|
||||
goto fail;
|
||||
vec[0] = mntbuf.c_str();
|
||||
if (!clear_and_convert_entry(devbuf, device))
|
||||
if (device && strcmp(device, "detached") == 0) {
|
||||
/* see note in move_mount. match nothing */
|
||||
devbuf.clear();
|
||||
} else if (!clear_and_convert_entry(devbuf, device)) {
|
||||
goto fail;
|
||||
}
|
||||
vec[1] = devbuf.c_str();
|
||||
/* skip type */
|
||||
vec[2] = default_match_pattern;
|
||||
@@ -946,8 +953,12 @@ int mnt_rule::gen_policy_move_mount(Profile &prof, int &count,
|
||||
if (!convert_entry(mntbuf, mnt_point))
|
||||
goto fail;
|
||||
vec[0] = mntbuf.c_str();
|
||||
if (!clear_and_convert_entry(devbuf, device))
|
||||
if (device && strcmp(device, "detached") == 0) {
|
||||
/* see note in move_mount. match nothing */
|
||||
devbuf.clear();
|
||||
} else if (!clear_and_convert_entry(devbuf, device)) {
|
||||
goto fail;
|
||||
}
|
||||
vec[1] = devbuf.c_str();
|
||||
/* skip type */
|
||||
vec[2] = default_match_pattern;
|
||||
@@ -987,8 +998,12 @@ int mnt_rule::gen_policy_new_mount(Profile &prof, int &count,
|
||||
if (!convert_entry(mntbuf, mnt_point))
|
||||
goto fail;
|
||||
vec[0] = mntbuf.c_str();
|
||||
if (!clear_and_convert_entry(devbuf, device))
|
||||
if (device && strcmp(device, "detached") == 0) {
|
||||
/* see note in move mount. match nothing */
|
||||
devbuf.clear();
|
||||
} else if (!clear_and_convert_entry(devbuf, device)) {
|
||||
goto fail;
|
||||
}
|
||||
vec[1] = devbuf.c_str();
|
||||
typebuf.clear();
|
||||
if (!build_list_val_expr(typebuf, dev_type))
|
||||
|
@@ -148,6 +148,8 @@ ostream &mqueue_rule::dump(ostream &os)
|
||||
os << ")";
|
||||
}
|
||||
|
||||
if (label)
|
||||
os << " label=" << label;
|
||||
if (qname)
|
||||
os << " " << qname;
|
||||
|
||||
@@ -238,6 +240,19 @@ int mqueue_rule::gen_policy_re(Profile &prof)
|
||||
audit == AUDIT_FORCE ? map_mqueue_perms(perms) : 0, 1,
|
||||
vec, parseopts, false))
|
||||
goto fail;
|
||||
|
||||
/* create should be allowed when label is present since the
|
||||
* queue needs to be created to have a label associated to it
|
||||
*/
|
||||
if (perms & AA_MQUEUE_CREATE &&
|
||||
!prof.policy.rules->add_rule_vec(
|
||||
priority,
|
||||
rule_mode,
|
||||
map_mqueue_perms(perms & AA_MQUEUE_CREATE_PERMS),
|
||||
audit == AUDIT_FORCE ? map_mqueue_perms(perms & AA_MQUEUE_CREATE_PERMS) : 0, 1,
|
||||
vec, parseopts, false))
|
||||
goto fail;
|
||||
|
||||
/* also provide label match with perm */
|
||||
if (!prof.policy.rules->add_rule_vec(priority,
|
||||
rule_mode,
|
||||
@@ -282,6 +297,19 @@ int mqueue_rule::gen_policy_re(Profile &prof)
|
||||
audit == AUDIT_FORCE ? map_mqueue_perms(perms) : 0, 1,
|
||||
vec, parseopts, false))
|
||||
goto fail;
|
||||
|
||||
/* create should be allowed when label is present since the
|
||||
* queue needs to be created to have a label associated to it
|
||||
*/
|
||||
if (perms & AA_MQUEUE_CREATE &&
|
||||
!prof.policy.rules->add_rule_vec(
|
||||
priority,
|
||||
rule_mode,
|
||||
map_mqueue_perms(perms & AA_MQUEUE_CREATE_PERMS),
|
||||
audit == AUDIT_FORCE ? map_mqueue_perms(perms & AA_MQUEUE_CREATE_PERMS) : 0, 1,
|
||||
vec, parseopts, false))
|
||||
goto fail;
|
||||
|
||||
/* also provide label match with perm */
|
||||
if (!prof.policy.rules->add_rule_vec(priority,
|
||||
rule_mode,
|
||||
|
@@ -69,6 +69,12 @@
|
||||
#define AA_VALID_MQUEUE_PERMS (AA_VALID_POSIX_MQ_PERMS | \
|
||||
AA_VALID_SYSV_MQ_PERMS)
|
||||
|
||||
/* read and write needed with create because mq_open can be called
|
||||
* with O_CREAT | O_RDWR, which all show up in the requested perms at
|
||||
* the same time during creation
|
||||
*/
|
||||
#define AA_MQUEUE_CREATE_PERMS (AA_MQUEUE_CREATE | AA_MQUEUE_READ | \
|
||||
AA_MQUEUE_WRITE)
|
||||
// warning getting into overlap area
|
||||
|
||||
/* Type of mqueue - can be explicit or implied by rule id/path */
|
||||
|
@@ -179,6 +179,8 @@ struct var_string {
|
||||
#define OPTION_STDOUT 4
|
||||
#define OPTION_OFILE 5
|
||||
|
||||
#define BOOL int
|
||||
|
||||
extern int preprocess_only;
|
||||
|
||||
#define PATH_CHROOT_REL 0x1
|
||||
@@ -211,6 +213,13 @@ do { \
|
||||
errno = perror_error; \
|
||||
} while (0)
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE (1)
|
||||
#endif
|
||||
#ifndef FALSE
|
||||
#define FALSE (0)
|
||||
#endif
|
||||
|
||||
#define MIN_PORT 0
|
||||
#define MAX_PORT 65535
|
||||
|
||||
@@ -242,6 +251,17 @@ do { \
|
||||
len; \
|
||||
})
|
||||
|
||||
#define list_find_prev(LIST, ENTRY) \
|
||||
({ \
|
||||
typeof(ENTRY) tmp, prev = NULL; \
|
||||
list_for_each((LIST), tmp) { \
|
||||
if (tmp == (ENTRY)) \
|
||||
break; \
|
||||
prev = tmp; \
|
||||
} \
|
||||
prev; \
|
||||
})
|
||||
|
||||
#define list_pop(LIST) \
|
||||
({ \
|
||||
typeof(LIST) _entry = (LIST); \
|
||||
@@ -259,6 +279,12 @@ do { \
|
||||
(LIST) = (ENTRY)->next; \
|
||||
(ENTRY)->next = NULL; \
|
||||
|
||||
#define list_remove(LIST, ENTRY) \
|
||||
do { \
|
||||
typeof(ENTRY) prev = list_find_prev((LIST), (ENTRY)); \
|
||||
list_remove_at((LIST), prev, (ENTRY)); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define DUP_STRING(orig, new, field, fail_target) \
|
||||
do { \
|
||||
@@ -321,6 +347,7 @@ extern int features_supports_inet;
|
||||
extern int kernel_supports_policydb;
|
||||
extern int kernel_supports_diff_encode;
|
||||
extern int features_supports_mount;
|
||||
extern bool features_supports_detached_mount;
|
||||
extern int features_supports_dbus;
|
||||
extern int features_supports_signal;
|
||||
extern int features_supports_ptrace;
|
||||
@@ -397,10 +424,10 @@ extern const char *basedir;
|
||||
#define glob_null 1
|
||||
extern pattern_t convert_aaregex_to_pcre(const char *aare, int anchor, int glob,
|
||||
std::string& pcre, int *first_re_pos);
|
||||
extern bool build_list_val_expr(std::string& buffer, struct value_list *list);
|
||||
extern bool convert_entry(std::string& buffer, char *entry);
|
||||
extern int build_list_val_expr(std::string& buffer, struct value_list *list);
|
||||
extern int convert_entry(std::string& buffer, char *entry);
|
||||
extern int clear_and_convert_entry(std::string& buffer, char *entry);
|
||||
extern bool convert_range(std::string& buffer, bignum start, bignum end);
|
||||
extern int convert_range(std::string& buffer, bignum start, bignum end);
|
||||
extern int process_regex(Profile *prof);
|
||||
extern int post_process_entry(struct cod_entry *entry);
|
||||
|
||||
@@ -419,6 +446,7 @@ extern void free_var_string(struct var_string *var);
|
||||
extern void warn_uppercase(void);
|
||||
extern int is_blacklisted(const char *name, const char *path);
|
||||
extern struct value_list *new_value_list(char *value);
|
||||
extern struct value_list *dup_value_list(struct value_list *list);
|
||||
extern void free_value_list(struct value_list *list);
|
||||
extern void print_value_list(struct value_list *list);
|
||||
extern struct cond_entry *new_cond_entry(char *name, int eq, struct value_list *list);
|
||||
|
@@ -142,10 +142,8 @@ static void process_entries(const void *nodep, VISIT value, int level unused)
|
||||
}
|
||||
if (dup) {
|
||||
dup->alias_ignore = true;
|
||||
/* The original entry->next is in dup->next, so we don't lose
|
||||
* any of the original elements of the linked list. Also, by
|
||||
* setting dup->alias_ignore, we trigger the check at the start
|
||||
* of the loop, skipping the new entry we just inserted.
|
||||
/* adds to the front of the list, list iteratition
|
||||
* will skip it
|
||||
*/
|
||||
entry->next = dup;
|
||||
|
||||
|
@@ -73,6 +73,7 @@ int features_supports_inet = 0; /* kernel supports inet network rules */
|
||||
int features_supports_unix = 0; /* kernel supports unix socket rules */
|
||||
int kernel_supports_policydb = 0; /* kernel supports new policydb */
|
||||
int features_supports_mount = 0; /* kernel supports mount rules */
|
||||
bool features_supports_detached_mount = false;
|
||||
int features_supports_dbus = 0; /* kernel supports dbus rules */
|
||||
int kernel_supports_diff_encode = 0; /* kernel supports diff_encode */
|
||||
int features_supports_signal = 0; /* kernel supports signal rules */
|
||||
|
@@ -202,7 +202,7 @@ static void start_include_position(const char *filename)
|
||||
current_lineno = 1;
|
||||
}
|
||||
|
||||
void push_include_stack(const char *filename)
|
||||
void push_include_stack(char *filename)
|
||||
{
|
||||
struct include_stack_t *include = NULL;
|
||||
|
||||
|
@@ -29,7 +29,7 @@ extern void parse_default_paths(void);
|
||||
extern int do_include_preprocessing(char *profilename);
|
||||
FILE *search_path(char *filename, char **fullpath, bool *skip);
|
||||
|
||||
extern void push_include_stack(const char *filename);
|
||||
extern void push_include_stack(char *filename);
|
||||
extern void pop_include_stack(void);
|
||||
extern void reset_include_stack(const char *filename);
|
||||
|
||||
|
@@ -245,7 +245,7 @@ static inline void sd_write_uint64(std::ostringstream &buf, u64 b)
|
||||
|
||||
static inline void sd_write_name(std::ostringstream &buf, const char *name)
|
||||
{
|
||||
PDEBUG("Writing name '%s'\n", name ? name : "(null)");
|
||||
PDEBUG("Writing name '%s'\n", name);
|
||||
if (name) {
|
||||
sd_write8(buf, SD_NAME);
|
||||
sd_write16(buf, strlen(name) + 1);
|
||||
|
@@ -956,6 +956,14 @@ void set_supported_features()
|
||||
features_supports_mount = features_intersect(kernel_features,
|
||||
policy_features,
|
||||
"mount");
|
||||
/*
|
||||
* note: detached mounts are just a null condition, so previous
|
||||
* mount rule encoding supports it, if the kernel supports
|
||||
* it. So support for detached depends on mount intersect and
|
||||
* kernel detached.
|
||||
*/
|
||||
features_supports_detached_mount = aa_features_supports(kernel_features,
|
||||
"mount/move_mount/detached");
|
||||
features_supports_dbus = features_intersect(kernel_features,
|
||||
policy_features, "dbus");
|
||||
features_supports_signal = features_intersect(kernel_features,
|
||||
@@ -1620,6 +1628,7 @@ int main(int argc, char *argv[])
|
||||
progname = argv[0];
|
||||
|
||||
init_base_dir();
|
||||
capabilities_init();
|
||||
|
||||
process_early_args(argc, argv);
|
||||
process_config_file(config_file);
|
||||
|
@@ -35,7 +35,6 @@
|
||||
#include <sys/apparmor_private.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
|
||||
#include "capability.h"
|
||||
#include "lib.h"
|
||||
@@ -62,10 +61,6 @@ void *reallocarray(void *ptr, size_t nmemb, size_t size)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL nullptr
|
||||
#endif
|
||||
|
||||
int is_blacklisted(const char *name, const char *path)
|
||||
{
|
||||
int retval = _aa_is_blacklisted(name);
|
||||
@@ -76,7 +71,12 @@ int is_blacklisted(const char *name, const char *path)
|
||||
return !retval ? 0 : 1;
|
||||
}
|
||||
|
||||
static const unordered_map<string, int> keyword_table = {
|
||||
struct keyword_table {
|
||||
const char *keyword;
|
||||
unsigned int token;
|
||||
};
|
||||
|
||||
static struct keyword_table keyword_table[] = {
|
||||
/* network */
|
||||
{"network", TOK_NETWORK},
|
||||
{"unix", TOK_UNIX},
|
||||
@@ -132,9 +132,16 @@ static const unordered_map<string, int> keyword_table = {
|
||||
{"sqpoll", TOK_SQPOLL},
|
||||
{"all", TOK_ALL},
|
||||
{"priority", TOK_PRIORITY},
|
||||
/* terminate */
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
static const unordered_map<string, int> rlimit_table = {
|
||||
/* glibc maps bsd ofile to nofile but musl does not. */
|
||||
#ifndef RLIMIT_OFILE
|
||||
#define RLIMIT_OFILE RLIMIT_NOFILE
|
||||
#endif
|
||||
|
||||
static struct keyword_table rlimit_table[] = {
|
||||
{"cpu", RLIMIT_CPU},
|
||||
{"fsize", RLIMIT_FSIZE},
|
||||
{"data", RLIMIT_DATA},
|
||||
@@ -142,9 +149,7 @@ static const unordered_map<string, int> rlimit_table = {
|
||||
{"core", RLIMIT_CORE},
|
||||
{"rss", RLIMIT_RSS},
|
||||
{"nofile", RLIMIT_NOFILE},
|
||||
#ifdef RLIMIT_OFILE
|
||||
{"ofile", RLIMIT_OFILE},
|
||||
#endif
|
||||
{"as", RLIMIT_AS},
|
||||
{"nproc", RLIMIT_NPROC},
|
||||
{"memlock", RLIMIT_MEMLOCK},
|
||||
@@ -160,33 +165,37 @@ static const unordered_map<string, int> rlimit_table = {
|
||||
#ifdef RLIMIT_RTTIME
|
||||
{"rttime", RLIMIT_RTTIME},
|
||||
#endif
|
||||
/* terminate */
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
/* for alpha matches, check for keywords */
|
||||
static int get_table_token(const char *name unused, const unordered_map<string, int> &table,
|
||||
const string &keyword)
|
||||
static int get_table_token(const char *name unused, struct keyword_table *table,
|
||||
const char *keyword)
|
||||
{
|
||||
auto token_entry = table.find(keyword);
|
||||
if (token_entry == table.end()) {
|
||||
PDEBUG("Unable to find %s %s\n", name, keyword.c_str());
|
||||
return -1;
|
||||
} else {
|
||||
PDEBUG("Found %s %s\n", name, keyword.c_str());
|
||||
return token_entry->second;
|
||||
int i;
|
||||
|
||||
for (i = 0; table[i].keyword; i++) {
|
||||
PDEBUG("Checking %s %s\n", name, table[i].keyword);
|
||||
if (strcmp(keyword, table[i].keyword) == 0) {
|
||||
PDEBUG("Found %s %s\n", name, table[i].keyword);
|
||||
return table[i].token;
|
||||
}
|
||||
}
|
||||
|
||||
PDEBUG("Unable to find %s %s\n", name, keyword);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* for alpha matches, check for keywords */
|
||||
int get_keyword_token(const char *keyword)
|
||||
{
|
||||
// Can't use string_view because that requires C++17
|
||||
return get_table_token("keyword", keyword_table, string(keyword));
|
||||
return get_table_token("keyword", keyword_table, keyword);
|
||||
}
|
||||
|
||||
int get_rlimit(const char *name)
|
||||
{
|
||||
// Can't use string_view because that requires C++17
|
||||
return get_table_token("rlimit", rlimit_table, string(name));
|
||||
return get_table_token("rlimit", rlimit_table, name);
|
||||
}
|
||||
|
||||
|
||||
@@ -202,164 +211,55 @@ struct capability_table {
|
||||
capability_flags flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Enum for the results of adding a capability, with values assigned to match
|
||||
* the int values returned by the old capable_add_cap function:
|
||||
*
|
||||
* -1: error
|
||||
* 0: no change - capability already in table
|
||||
* 1: added flag to capability in table
|
||||
* 2: added new capability
|
||||
*/
|
||||
enum add_cap_result {
|
||||
ERROR = -1, // Was only used for OOM conditions
|
||||
ALREADY_EXISTS = 0,
|
||||
FLAG_ADDED = 1,
|
||||
CAP_ADDED = 2
|
||||
};
|
||||
|
||||
static struct capability_table base_capability_table[] = {
|
||||
/* capabilities */
|
||||
#include "cap_names.h"
|
||||
};
|
||||
static const size_t BASE_CAP_TABLE_SIZE = sizeof(base_capability_table)/sizeof(struct capability_table);
|
||||
|
||||
class capability_lookup {
|
||||
vector<capability_table> cap_table;
|
||||
// Use unordered_map to avoid pulling in two map implementations
|
||||
// We may want to switch to boost::multiindex to avoid duplication
|
||||
unordered_map<string, capability_table&> name_cap_map;
|
||||
unordered_map<unsigned int, capability_table&> int_cap_map;
|
||||
|
||||
private:
|
||||
void add_capability_table_entry_raw(capability_table entry) {
|
||||
cap_table.push_back(entry);
|
||||
capability_table &entry_ref = cap_table.back();
|
||||
name_cap_map.emplace(string(entry_ref.name), entry_ref);
|
||||
int_cap_map.emplace(entry_ref.cap, entry_ref);
|
||||
}
|
||||
public:
|
||||
capability_lookup() :
|
||||
cap_table(vector<capability_table>()),
|
||||
name_cap_map(unordered_map<string, capability_table&>(BASE_CAP_TABLE_SIZE)),
|
||||
int_cap_map(unordered_map<unsigned int, capability_table&>(BASE_CAP_TABLE_SIZE)) {
|
||||
cap_table.reserve(BASE_CAP_TABLE_SIZE);
|
||||
for (size_t i=0; i<BASE_CAP_TABLE_SIZE; i++) {
|
||||
add_capability_table_entry_raw(base_capability_table[i]);
|
||||
}
|
||||
}
|
||||
|
||||
capability_table* find_cap_entry_by_name(string const & name) const {
|
||||
auto map_entry = this->name_cap_map.find(name);
|
||||
if (map_entry == this->name_cap_map.end()) {
|
||||
return NULL;
|
||||
} else {
|
||||
PDEBUG("Found %s %s\n", name.c_str(), map_entry->second.name);
|
||||
return &map_entry->second;
|
||||
}
|
||||
}
|
||||
|
||||
capability_table* find_cap_entry_by_num(unsigned int cap) const {
|
||||
auto map_entry = this->int_cap_map.find(cap);
|
||||
if (map_entry == this->int_cap_map.end()) {
|
||||
return NULL;
|
||||
} else {
|
||||
PDEBUG("Found %d %d\n", cap, map_entry->second.cap);
|
||||
return &map_entry->second;
|
||||
}
|
||||
}
|
||||
|
||||
int name_to_capability(string const &cap) const {
|
||||
auto map_entry = this->name_cap_map.find(cap);
|
||||
if (map_entry == this->name_cap_map.end()) {
|
||||
PDEBUG("Unable to find %s %s\n", "capability", cap.c_str());
|
||||
return -1;
|
||||
} else {
|
||||
return map_entry->second.cap;
|
||||
}
|
||||
}
|
||||
|
||||
const char *capability_to_name(unsigned int cap) const {
|
||||
auto map_entry = this->int_cap_map.find(cap);
|
||||
if (map_entry == this->int_cap_map.end()) {
|
||||
return "invalid-capability";
|
||||
} else {
|
||||
return map_entry->second.name;
|
||||
}
|
||||
}
|
||||
|
||||
int capability_backmap(unsigned int cap) const {
|
||||
auto map_entry = this->int_cap_map.find(cap);
|
||||
if (map_entry == this->int_cap_map.end()) {
|
||||
return NO_BACKMAP_CAP;
|
||||
} else {
|
||||
return map_entry->second.backmap;
|
||||
}
|
||||
}
|
||||
|
||||
bool capability_in_kernel(unsigned int cap) const {
|
||||
auto map_entry = this->int_cap_map.find(cap);
|
||||
if (map_entry == this->int_cap_map.end()) {
|
||||
return false;
|
||||
} else {
|
||||
return map_entry->second.flags & CAPFLAG_KERNEL_FEATURE;
|
||||
}
|
||||
}
|
||||
|
||||
void __debug_capabilities(uint64_t capset, const char *name) const {
|
||||
printf("%s:", name);
|
||||
|
||||
for (auto it = this->cap_table.cbegin(); it != this->cap_table.cend(); it++) {
|
||||
if ((1ull << it->cap) & capset)
|
||||
printf (" %s", it->name);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
add_cap_result capable_add_cap(string const & str, unsigned int cap,
|
||||
capability_flags flag) {
|
||||
struct capability_table *ent = this->find_cap_entry_by_name(str);
|
||||
if (ent) {
|
||||
if (ent->cap != cap) {
|
||||
pwarn(WARN_UNEXPECTED, "feature capability '%s:%d' does not equal expected %d. Ignoring ...\n", str.c_str(), cap, ent->cap);
|
||||
/* TODO: make warn to error config */
|
||||
return add_cap_result::ALREADY_EXISTS;
|
||||
}
|
||||
if (ent->flags & flag)
|
||||
return add_cap_result::ALREADY_EXISTS;
|
||||
ent->flags = (capability_flags) (ent->flags | flag);
|
||||
return add_cap_result::FLAG_ADDED;
|
||||
} else {
|
||||
struct capability_table new_entry;
|
||||
new_entry.name = strdup(str.c_str());
|
||||
if (!new_entry.name) {
|
||||
yyerror(_("Out of memory"));
|
||||
return add_cap_result::ERROR;
|
||||
}
|
||||
new_entry.cap = cap;
|
||||
new_entry.backmap = 0;
|
||||
new_entry.flags = flag;
|
||||
try {
|
||||
this->add_capability_table_entry_raw(new_entry);
|
||||
} catch (const std::bad_alloc &_e) {
|
||||
yyerror(_("Out of memory"));
|
||||
return add_cap_result::ERROR;
|
||||
}
|
||||
// TODO: exception catching for causes other than OOM
|
||||
return add_cap_result::CAP_ADDED;
|
||||
}
|
||||
}
|
||||
|
||||
void clear_cap_flag(capability_flags flags)
|
||||
{
|
||||
for (auto it = this->cap_table.begin(); it != this->cap_table.end(); it++) {
|
||||
PDEBUG("Clearing capability flag for capability \"%s\"\n", it->name);
|
||||
it->flags = (capability_flags) (it->flags & ~flags);
|
||||
}
|
||||
}
|
||||
/* terminate */
|
||||
{NULL, 0, 0, CAPFLAGS_CLEAR}
|
||||
};
|
||||
|
||||
static capability_lookup cap_table;
|
||||
static struct capability_table *cap_table;
|
||||
static int cap_table_size;
|
||||
|
||||
void capabilities_init(void)
|
||||
{
|
||||
cap_table = (struct capability_table *) malloc(sizeof(base_capability_table));
|
||||
if (!cap_table)
|
||||
yyerror(_("Memory allocation error."));
|
||||
memcpy(cap_table, base_capability_table, sizeof(base_capability_table));
|
||||
cap_table_size = sizeof(base_capability_table)/sizeof(struct capability_table);
|
||||
}
|
||||
|
||||
struct capability_table *find_cap_entry_by_name(const char *name)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; cap_table[i].name; i++) {
|
||||
PDEBUG("Checking %s %s\n", name, cap_table[i].name);
|
||||
if (strcmp(name, cap_table[i].name) == 0) {
|
||||
PDEBUG("Found %s %s\n", name, cap_table[i].name);
|
||||
return &cap_table[i];
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct capability_table *find_cap_entry_by_num(unsigned int cap)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; cap_table[i].name; i++) {
|
||||
PDEBUG("Checking %d %d\n", cap, cap_table[i].cap);
|
||||
if (cap == cap_table[i].cap) {
|
||||
PDEBUG("Found %d %d\n", cap, cap_table[i].cap);
|
||||
return &cap_table[i];
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* don't mark up str with \0 */
|
||||
static const char *strn_token(const char *str, size_t &len)
|
||||
@@ -397,6 +297,59 @@ bool strcomp (const char *lhs, const char *rhs)
|
||||
return null_strcmp(lhs, rhs) < 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns: -1: error
|
||||
* 0: no change - capability already in table
|
||||
* 1: added flag to capability in table
|
||||
* 2: added new capability
|
||||
*/
|
||||
static int capable_add_cap(const char *str, int len, unsigned int cap,
|
||||
capability_flags flag)
|
||||
{
|
||||
/* extract name from str so we can treat as a string */
|
||||
autofree char *name = strndup(str, len);
|
||||
|
||||
if (!name) {
|
||||
yyerror(_("Out of memory"));
|
||||
return -1;
|
||||
}
|
||||
struct capability_table *ent = find_cap_entry_by_name(name);
|
||||
if (ent) {
|
||||
if (ent->cap != cap) {
|
||||
pwarn(WARN_UNEXPECTED, "feature capability '%s:%d' does not equal expected %d. Ignoring ...\n", name, cap, ent->cap);
|
||||
/* TODO: make warn to error config */
|
||||
return 0;
|
||||
}
|
||||
if (ent->flags & flag)
|
||||
return 0; /* no change */
|
||||
ent->flags = (capability_flags) (ent->flags | flag);
|
||||
return 1; /* modified */
|
||||
} else {
|
||||
struct capability_table *tmp;
|
||||
|
||||
tmp = (struct capability_table *) reallocarray(cap_table, sizeof(struct capability_table), cap_table_size+1);
|
||||
if (!tmp) {
|
||||
yyerror(_("Out of memory"));
|
||||
/* TODO: change away from yyerror */
|
||||
return -1;
|
||||
}
|
||||
cap_table = tmp;
|
||||
ent = &cap_table[cap_table_size - 1]; /* overwrite null */
|
||||
ent->name = strndup(name, len);
|
||||
if (!ent->name) {
|
||||
/* TODO: change away from yyerror */
|
||||
yyerror(_("Out of memory"));
|
||||
return -1;
|
||||
}
|
||||
ent->cap = cap;
|
||||
ent->flags = flag;
|
||||
cap_table[cap_table_size].name = NULL; /* new null */
|
||||
cap_table_size++;
|
||||
}
|
||||
|
||||
return 2; /* added */
|
||||
}
|
||||
|
||||
bool add_cap_feature_mask(struct aa_features *features, capability_flags flags)
|
||||
{
|
||||
autofree char *value = NULL;
|
||||
@@ -413,8 +366,7 @@ bool add_cap_feature_mask(struct aa_features *features, capability_flags flags)
|
||||
for (capstr = strn_token(value, len);
|
||||
capstr;
|
||||
capstr = strn_token(capstr + len, len)) {
|
||||
string capstr_as_str = string(capstr, len);
|
||||
if (cap_table.capable_add_cap(capstr_as_str, n, flags) < 0)
|
||||
if (capable_add_cap(capstr, len, n, flags) < 0)
|
||||
return false;
|
||||
n++;
|
||||
if (len > valuelen) {
|
||||
@@ -430,32 +382,70 @@ bool add_cap_feature_mask(struct aa_features *features, capability_flags flags)
|
||||
|
||||
void clear_cap_flag(capability_flags flags)
|
||||
{
|
||||
cap_table.clear_cap_flag(flags);
|
||||
int i;
|
||||
|
||||
for (i = 0; cap_table[i].name; i++) {
|
||||
PDEBUG("Clearing capability flag for capability \"%s\"\n", cap_table[i].name);
|
||||
cap_table[i].flags = (capability_flags) (cap_table[i].flags & ~flags);
|
||||
}
|
||||
}
|
||||
|
||||
int name_to_capability(const char *cap)
|
||||
{
|
||||
return cap_table.name_to_capability(string(cap));
|
||||
struct capability_table *ent;
|
||||
|
||||
ent = find_cap_entry_by_name(cap);
|
||||
if (ent)
|
||||
return ent->cap;
|
||||
|
||||
PDEBUG("Unable to find %s %s\n", "capability", cap);
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char *capability_to_name(unsigned int cap)
|
||||
{
|
||||
return cap_table.capability_to_name(cap);
|
||||
struct capability_table *ent;
|
||||
|
||||
ent = find_cap_entry_by_num(cap);
|
||||
if (ent)
|
||||
return ent->name;
|
||||
|
||||
return "invalid-capability";
|
||||
}
|
||||
|
||||
int capability_backmap(unsigned int cap)
|
||||
{
|
||||
return cap_table.capability_backmap(cap);
|
||||
struct capability_table *ent;
|
||||
|
||||
ent = find_cap_entry_by_num(cap);
|
||||
if (ent)
|
||||
return ent->backmap;
|
||||
|
||||
return NO_BACKMAP_CAP;
|
||||
}
|
||||
|
||||
bool capability_in_kernel(unsigned int cap)
|
||||
{
|
||||
return cap_table.capability_in_kernel(cap);
|
||||
struct capability_table *ent;
|
||||
|
||||
ent = find_cap_entry_by_num(cap);
|
||||
if (ent)
|
||||
return ent->flags & CAPFLAG_KERNEL_FEATURE;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void __debug_capabilities(uint64_t capset, const char *name)
|
||||
{
|
||||
cap_table.__debug_capabilities(capset, name);
|
||||
unsigned int i;
|
||||
|
||||
printf("%s:", name);
|
||||
|
||||
for (i = 0; cap_table[i].name; i++) {
|
||||
if ((1ull << cap_table[i].cap) & capset)
|
||||
printf (" %s", cap_table[i].name);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
char *processunquoted(const char *string, int len)
|
||||
@@ -1213,6 +1203,37 @@ void free_value_list(struct value_list *list)
|
||||
}
|
||||
}
|
||||
|
||||
struct value_list *dup_value_list(struct value_list *list)
|
||||
{
|
||||
struct value_list *entry, *dup, *head = NULL;
|
||||
char *value;
|
||||
|
||||
list_for_each(list, entry) {
|
||||
value = NULL;
|
||||
if (list->value) {
|
||||
value = strdup(list->value);
|
||||
if (!value)
|
||||
goto fail2;
|
||||
}
|
||||
dup = new_value_list(value);
|
||||
if (!dup)
|
||||
goto fail;
|
||||
if (head)
|
||||
list_append(head, dup);
|
||||
else
|
||||
head = dup;
|
||||
}
|
||||
|
||||
return head;
|
||||
|
||||
fail:
|
||||
free(value);
|
||||
fail2:
|
||||
free_value_list(head);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void print_value_list(struct value_list *list)
|
||||
{
|
||||
struct value_list *entry;
|
||||
|
@@ -178,6 +178,8 @@ Profile *merge_policy(Profile *a, Profile *b)
|
||||
}
|
||||
}
|
||||
|
||||
a->rule_ents.splice(a->rule_ents.end(), b->rule_ents);
|
||||
|
||||
merge_hats(a, b->hat_table);
|
||||
delete b;
|
||||
out:
|
||||
|
@@ -50,7 +50,7 @@ enum error_type {
|
||||
void filter_slashes(char *path)
|
||||
{
|
||||
char *sptr, *dptr;
|
||||
bool seen_slash = false;
|
||||
BOOL seen_slash = 0;
|
||||
|
||||
if (!path || (strlen(path) < 2))
|
||||
return;
|
||||
@@ -69,7 +69,7 @@ void filter_slashes(char *path)
|
||||
++sptr;
|
||||
} else {
|
||||
*dptr++ = *sptr++;
|
||||
seen_slash = true;
|
||||
seen_slash = TRUE;
|
||||
}
|
||||
} else {
|
||||
seen_slash = 0;
|
||||
@@ -111,14 +111,14 @@ pattern_t convert_aaregex_to_pcre(const char *aare, int anchor, int glob,
|
||||
#define MAX_ALT_DEPTH 50
|
||||
*first_re_pos = 0;
|
||||
|
||||
int ret = 1;
|
||||
int ret = TRUE;
|
||||
/* flag to indicate input error */
|
||||
enum error_type error;
|
||||
|
||||
const char *sptr;
|
||||
pattern_t ptype;
|
||||
|
||||
bool bEscape = false; /* flag to indicate escape */
|
||||
BOOL bEscape = 0; /* flag to indicate escape */
|
||||
int ingrouping = 0; /* flag to indicate {} context */
|
||||
int incharclass = 0; /* flag to indicate [ ] context */
|
||||
int grouping_count[MAX_ALT_DEPTH] = {0};
|
||||
@@ -150,7 +150,7 @@ pattern_t convert_aaregex_to_pcre(const char *aare, int anchor, int glob,
|
||||
if (bEscape) {
|
||||
pcre.append("\\\\");
|
||||
} else {
|
||||
bEscape = true;
|
||||
bEscape = TRUE;
|
||||
++sptr;
|
||||
continue; /*skip turning bEscape off */
|
||||
} /* bEscape */
|
||||
@@ -393,7 +393,7 @@ pattern_t convert_aaregex_to_pcre(const char *aare, int anchor, int glob,
|
||||
break;
|
||||
} /* switch (*sptr) */
|
||||
|
||||
bEscape = false;
|
||||
bEscape = FALSE;
|
||||
++sptr;
|
||||
} /* while error == e_no_error && *sptr) */
|
||||
|
||||
@@ -419,12 +419,12 @@ pattern_t convert_aaregex_to_pcre(const char *aare, int anchor, int glob,
|
||||
PERROR(_("%s: Unable to parse input line '%s'\n"),
|
||||
progname, aare);
|
||||
|
||||
ret = 0;
|
||||
ret = FALSE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
if (ret == 0)
|
||||
if (ret == FALSE)
|
||||
ptype = ePatternInvalid;
|
||||
|
||||
if (parseopts.dump & DUMP_DFA_RULE_EXPR)
|
||||
@@ -464,7 +464,7 @@ static void warn_once_xattr(const char *name)
|
||||
common_warn_once(name, "xattr attachment conditional ignored", &warned_name);
|
||||
}
|
||||
|
||||
static bool process_profile_name_xmatch(Profile *prof)
|
||||
static int process_profile_name_xmatch(Profile *prof)
|
||||
{
|
||||
std::string tbuf;
|
||||
pattern_t ptype;
|
||||
@@ -479,7 +479,7 @@ static bool process_profile_name_xmatch(Profile *prof)
|
||||
/* don't filter_slashes for profile names, do on attachment */
|
||||
name = strdup(local_name(prof->name));
|
||||
if (!name)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
filter_slashes(name);
|
||||
ptype = convert_aaregex_to_pcre(name, 0, glob_default, tbuf,
|
||||
@@ -491,7 +491,7 @@ static bool process_profile_name_xmatch(Profile *prof)
|
||||
PERROR(_("%s: Invalid profile name '%s' - bad regular expression\n"), progname, name);
|
||||
if (!prof->attachment)
|
||||
free(name);
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!prof->attachment)
|
||||
@@ -506,11 +506,11 @@ static bool process_profile_name_xmatch(Profile *prof)
|
||||
/* build a dfa */
|
||||
aare_rules *rules = new aare_rules();
|
||||
if (!rules)
|
||||
return false;
|
||||
return FALSE;
|
||||
if (!rules->add_rule(tbuf.c_str(), 0, RULE_ALLOW,
|
||||
AA_MAY_EXEC, 0, parseopts)) {
|
||||
delete rules;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
if (prof->altnames) {
|
||||
struct alt_name *alt;
|
||||
@@ -525,7 +525,7 @@ static bool process_profile_name_xmatch(Profile *prof)
|
||||
RULE_ALLOW, AA_MAY_EXEC,
|
||||
0, parseopts)) {
|
||||
delete rules;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -567,7 +567,7 @@ static bool process_profile_name_xmatch(Profile *prof)
|
||||
&len);
|
||||
if (!rules->append_rule(tbuf.c_str(), true, true, parseopts)) {
|
||||
delete rules;
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -581,10 +581,10 @@ build:
|
||||
prof->xmatch = rules->create_dfablob(&prof->xmatch_size, &prof->xmatch_len, prof->xmatch_perms_table, parseopts, false, false, false);
|
||||
delete rules;
|
||||
if (!prof->xmatch)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int warn_change_profile = 1;
|
||||
@@ -606,21 +606,21 @@ static bool is_change_profile_perms(perm32_t perms)
|
||||
return perms & AA_CHANGE_PROFILE;
|
||||
}
|
||||
|
||||
static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
static int process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
{
|
||||
std::string tbuf;
|
||||
pattern_t ptype;
|
||||
int pos;
|
||||
|
||||
if (!entry) /* shouldn't happen */
|
||||
return false;
|
||||
return TRUE;
|
||||
|
||||
|
||||
if (!is_change_profile_perms(entry->perms))
|
||||
filter_slashes(entry->name);
|
||||
ptype = convert_aaregex_to_pcre(entry->name, 0, glob_default, tbuf, &pos);
|
||||
if (ptype == ePatternInvalid)
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
entry->pattern_type = ptype;
|
||||
|
||||
@@ -649,13 +649,13 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
entry->perms & ~(AA_LINK_BITS | AA_CHANGE_PROFILE),
|
||||
entry->audit == AUDIT_FORCE ? entry->perms & ~(AA_LINK_BITS | AA_CHANGE_PROFILE) : 0,
|
||||
parseopts))
|
||||
return false;
|
||||
return FALSE;
|
||||
} else if (!is_change_profile_perms(entry->perms)) {
|
||||
if (!dfarules->add_rule(tbuf.c_str(), entry->priority,
|
||||
entry->rule_mode, entry->perms,
|
||||
entry->audit == AUDIT_FORCE ? entry->perms : 0,
|
||||
parseopts))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (entry->perms & (AA_LINK_BITS)) {
|
||||
@@ -669,7 +669,7 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
filter_slashes(entry->link_name);
|
||||
ptype = convert_aaregex_to_pcre(entry->link_name, 0, glob_default, lbuf, &pos);
|
||||
if (ptype == ePatternInvalid)
|
||||
return false;
|
||||
return FALSE;
|
||||
if (entry->subset)
|
||||
perms |= LINK_TO_LINK_SUBSET(perms);
|
||||
vec[1] = lbuf.c_str();
|
||||
@@ -681,7 +681,7 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
entry->rule_mode, perms,
|
||||
entry->audit == AUDIT_FORCE ? perms & AA_LINK_BITS : 0,
|
||||
2, vec, parseopts, false))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
if (is_change_profile_perms(entry->perms)) {
|
||||
const char *vec[3];
|
||||
@@ -702,7 +702,7 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
if (entry->onexec) {
|
||||
ptype = convert_aaregex_to_pcre(entry->onexec, 0, glob_default, xbuf, &pos);
|
||||
if (ptype == ePatternInvalid)
|
||||
return false;
|
||||
return FALSE;
|
||||
vec[0] = xbuf.c_str();
|
||||
} else
|
||||
/* allow change_profile for all execs */
|
||||
@@ -713,14 +713,14 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
|
||||
if (!parse_label(&stack, &ns, &name,
|
||||
tbuf.c_str(), false)) {
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (stack) {
|
||||
fprintf(stderr,
|
||||
_("The current kernel does not support stacking of named transitions: %s\n"),
|
||||
tbuf.c_str());
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (ns)
|
||||
@@ -734,13 +734,13 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
if (!dfarules->add_rule_vec(entry->priority, entry->rule_mode,
|
||||
AA_CHANGE_PROFILE | onexec_perms,
|
||||
0, index - 1, &vec[1], parseopts, false))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/* onexec rules - both rules are needed for onexec */
|
||||
if (!dfarules->add_rule_vec(entry->priority, entry->rule_mode,
|
||||
onexec_perms,
|
||||
0, 1, vec, parseopts, false))
|
||||
return false;
|
||||
return FALSE;
|
||||
|
||||
/**
|
||||
* pick up any exec bits, from the frontend parser, related to
|
||||
@@ -750,19 +750,19 @@ static bool process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
|
||||
if (!dfarules->add_rule_vec(entry->priority, entry->rule_mode,
|
||||
onexec_perms, 0, index, vec,
|
||||
parseopts, false))
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool post_process_entries(Profile *prof)
|
||||
int post_process_entries(Profile *prof)
|
||||
{
|
||||
int ret = true;
|
||||
int ret = TRUE;
|
||||
struct cod_entry *entry;
|
||||
|
||||
list_for_each(prof->entries, entry) {
|
||||
if (!process_dfa_entry(prof->dfa.rules, entry))
|
||||
ret = false;
|
||||
ret = FALSE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -815,7 +815,7 @@ out:
|
||||
return error;
|
||||
}
|
||||
|
||||
bool build_list_val_expr(std::string& buffer, struct value_list *list)
|
||||
int build_list_val_expr(std::string& buffer, struct value_list *list)
|
||||
{
|
||||
struct value_list *ent;
|
||||
pattern_t ptype;
|
||||
@@ -823,7 +823,7 @@ bool build_list_val_expr(std::string& buffer, struct value_list *list)
|
||||
|
||||
if (!list) {
|
||||
buffer.append(default_match_pattern);
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
buffer.append("(");
|
||||
@@ -840,12 +840,12 @@ bool build_list_val_expr(std::string& buffer, struct value_list *list)
|
||||
}
|
||||
buffer.append(")");
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
fail:
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool convert_entry(std::string& buffer, char *entry)
|
||||
int convert_entry(std::string& buffer, char *entry)
|
||||
{
|
||||
pattern_t ptype;
|
||||
int pos;
|
||||
@@ -853,12 +853,12 @@ bool convert_entry(std::string& buffer, char *entry)
|
||||
if (entry) {
|
||||
ptype = convert_aaregex_to_pcre(entry, 0, glob_default, buffer, &pos);
|
||||
if (ptype == ePatternInvalid)
|
||||
return false;
|
||||
return FALSE;
|
||||
} else {
|
||||
buffer.append(default_match_pattern);
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int clear_and_convert_entry(std::string& buffer, char *entry)
|
||||
@@ -959,7 +959,7 @@ static std::string generate_regex_range(bignum start, bignum end)
|
||||
return result.str();
|
||||
}
|
||||
|
||||
bool convert_range(std::string& buffer, bignum start, bignum end)
|
||||
int convert_range(std::string& buffer, bignum start, bignum end)
|
||||
{
|
||||
pattern_t ptype;
|
||||
int pos;
|
||||
@@ -969,24 +969,24 @@ bool convert_range(std::string& buffer, bignum start, bignum end)
|
||||
if (!regex_range.empty()) {
|
||||
ptype = convert_aaregex_to_pcre(regex_range.c_str(), 0, glob_default, buffer, &pos);
|
||||
if (ptype == ePatternInvalid)
|
||||
return false;
|
||||
return FALSE;
|
||||
} else {
|
||||
buffer.append(default_match_pattern);
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool post_process_policydb_ents(Profile *prof)
|
||||
int post_process_policydb_ents(Profile *prof)
|
||||
{
|
||||
for (RuleList::iterator i = prof->rule_ents.begin(); i != prof->rule_ents.end(); i++) {
|
||||
if ((*i)->skip())
|
||||
continue;
|
||||
if ((*i)->gen_policy_re(*prof) == RULE_ERROR)
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1449,6 +1449,9 @@ int main(void)
|
||||
int rc = 0;
|
||||
int retval;
|
||||
|
||||
// Default is parser_common.c, but it should be this source file instead
|
||||
progname = __FILE__;
|
||||
|
||||
retval = test_filter_slashes();
|
||||
if (retval != 0)
|
||||
rc = retval;
|
||||
|
@@ -79,7 +79,7 @@ struct var_string *split_out_var(const char *string)
|
||||
{
|
||||
struct var_string *n = NULL;
|
||||
const char *sptr;
|
||||
bool bEscape = false; /* flag to indicate escape */
|
||||
BOOL bEscape = 0; /* flag to indicate escape */
|
||||
|
||||
if (!string) /* shouldn't happen */
|
||||
return NULL;
|
||||
@@ -89,11 +89,15 @@ struct var_string *split_out_var(const char *string)
|
||||
while (!n && *sptr) {
|
||||
switch (*sptr) {
|
||||
case '\\':
|
||||
bEscape = !bEscape;
|
||||
if (bEscape) {
|
||||
bEscape = FALSE;
|
||||
} else {
|
||||
bEscape = TRUE;
|
||||
}
|
||||
break;
|
||||
case '@':
|
||||
if (bEscape) {
|
||||
bEscape = false;
|
||||
bEscape = FALSE;
|
||||
} else if (*(sptr + 1) == '{') {
|
||||
const char *eptr = get_var_end(sptr + 2);
|
||||
if (!eptr)
|
||||
@@ -107,7 +111,8 @@ struct var_string *split_out_var(const char *string)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
bEscape = false;
|
||||
if (bEscape)
|
||||
bEscape = FALSE;
|
||||
}
|
||||
sptr++;
|
||||
}
|
||||
|
@@ -704,7 +704,7 @@ rules: rules opt_prefix block
|
||||
if (($2).priority != 0) {
|
||||
yyerror(_("priority is not allowed on rule blocks"));
|
||||
}
|
||||
PDEBUG("matched: %s%s%s%sblock\n",
|
||||
PDEBUG("matched: %s%s%sblock\n",
|
||||
$2.audit == AUDIT_FORCE ? "audit " : "",
|
||||
$2.rule_mode == RULE_DENY ? "deny " : "",
|
||||
$2.rule_mode == RULE_PROMPT ? "prompt " : "",
|
||||
|
223
parser/po/af.po
223
parser/po/af.po
@@ -8,33 +8,33 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 01:27+0000\n"
|
||||
"Last-Translator: Novell Language <Unknown>\n"
|
||||
"PO-Revision-Date: 2020-03-12 02:48+0000\n"
|
||||
"Last-Translator: bernard stafford <Unknown>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2020-03-13 05:43+0000\n"
|
||||
"X-Generator: Launchpad (build 3a6db24bbe7280ec09bae73384238390fcc98ad3)\n"
|
||||
"Language: af\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: Buite geheue.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: basedir %s is nie 'n gids, huppel tans.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: Kon gids nie by te voeg %s om soek pad.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: Kon nie geheue toeken.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
msgid "Bad write position\n"
|
||||
@@ -50,7 +50,7 @@ msgstr "Geheue is opgebruik\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "Kon nie profiel kopieer: Slegte geheue-adres\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
@@ -62,7 +62,7 @@ msgstr "Profiel stem nie ooreen met handtekening nie\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr ""
|
||||
msgstr "Profiel weergawe nie gesteunde deur Apparmora module\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
msgid "Profile already exists\n"
|
||||
@@ -74,12 +74,12 @@ msgstr "Profiel bestaan nie\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
msgstr "Toestemming ontkened; poging tot laai 'n profiel terwyl confined?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "Onbekende fout (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
@@ -109,7 +109,7 @@ msgstr "%s: Kan nie na stdout toe skryf nie\n"
|
||||
#: ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nie in staat is om te skryf aan uitset lêer\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
@@ -145,11 +145,11 @@ msgstr "PANIEK slegs inkrementbuffer %p pos %p uitbr %p grootte %d res %p\n"
|
||||
#: ../parser_interface.c:446
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
msgstr "profiel %s netwerk reëls nie afgedwing\n"
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "Onbekend patroon tipe\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
@@ -162,13 +162,13 @@ msgstr "Kan %s - %s nie open nie\n"
|
||||
#: ../parser_interface.c:543
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove ^%s\n"
|
||||
msgstr ""
|
||||
msgstr "Geheue Allokasie Fout: Nie in staat om verwyder ^%s\n"
|
||||
|
||||
#: ../parser_interface.c:789 ../parser_interface.c:781
|
||||
#: ../parser_interface.c:556
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove %s:%s."
|
||||
msgstr ""
|
||||
msgstr "Geheue Allokasie Fout: Nie in staat om verwyder %s:%s."
|
||||
|
||||
#: ../parser_interface.c:810 ../parser_interface.c:802
|
||||
msgid "unable to create work area\n"
|
||||
@@ -190,32 +190,32 @@ msgstr "%s: Kan nie volledige profielinskrywing skryf nie\n"
|
||||
#: ../parser_interface.c:593
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nie in staat skryf die entire profiel inskrywing om kas\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "Kon nie oopmaak '%s'"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "fstat misluk vir '%s'"
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
msgstr "oopdir misluk '%s'"
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "stat misluk vir '%s'"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Kon nie oopmaak '%s' in '%s'"
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
@@ -225,17 +225,17 @@ msgstr "Onverwagte karakter gevind: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "Veranderlike aangiftes aanvaar nie trailing kommas"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
msgid "(network_mode) Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
msgstr "(netwerk_modus) Gevind onverwagte karakter: '%s'"
|
||||
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "Waarskuwing vanaf %s (%s%sline %d): %s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
@@ -248,6 +248,8 @@ msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
"Use --subdomainfs to override.\n"
|
||||
msgstr ""
|
||||
"Waarskuwing: nie in staat om vind 'n geskikte fs in %s, is dit gemonteer?\n"
|
||||
"Gebruik --subdomainfs om override.\n"
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#, c-format
|
||||
@@ -255,6 +257,8 @@ msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s: Jammer. Wat jy nodig het root voorregte om hierdie program uit te voer.\n"
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#, c-format
|
||||
@@ -263,12 +267,16 @@ msgid ""
|
||||
"Anybody who can run this program can update your AppArmor profiles.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s: Waarskuwing! Jy het stel hierdie program setuid root.\n"
|
||||
"Enigiemand wat hierdie programe kan jou AppArmor profiele by te werk kan "
|
||||
"hardloop.\n"
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: Kan nie profiel lees %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227
|
||||
#: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586
|
||||
@@ -294,12 +302,12 @@ msgstr "Geheuetoekenningsfout."
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Kas laai suksesvol vir \"%s\".\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Kas relaai suksesvol vir \"%s\".\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#, c-format
|
||||
@@ -311,11 +319,14 @@ msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
msgstr ""
|
||||
"Hoofletters kwalifiseerders \"RWLIMX\" is deprecated, asseblief omskakel na "
|
||||
"kleinletters\n"
|
||||
"Sien die apparmor.d(5) manpage vir besonderhede.\n"
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr ""
|
||||
msgstr "Konflik 'a' en 'w' perms is onderling uitsluitend."
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
@@ -329,12 +340,17 @@ msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
"to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n"
|
||||
msgstr ""
|
||||
"Onbegrensde exec kwalifiseerder (%c%c) toelaat sommige gevaarlike omgewing "
|
||||
"veranderlikes om wees geslaag om die onbegrensde proses; 'man 5 apparmor.d' "
|
||||
"vir besonderhede.\n"
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"Exec kwalifiseerder '%c' ongeldig, konflikterende kwalifiseerder reeds "
|
||||
"gespesifiseer"
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
@@ -342,22 +358,24 @@ msgstr ""
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"Exec kwalifiseerder '%c%c' ongeldig, konflikterende kwalifiseerder reeds "
|
||||
"gespesifiseer"
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interne: onverwagte modus karakter '%c' in insette"
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr ""
|
||||
msgstr "Interne fout gegenereer ongeldige perm 0x%llx\n"
|
||||
|
||||
#: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626
|
||||
#: ../parser_variable.c:229
|
||||
#, c-format
|
||||
msgid "AppArmor parser error: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor parser fout: %s\n"
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
@@ -366,47 +384,50 @@ msgstr "Kon inskrywings nie saamvleg nie. Geheue is opgebruik\n"
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
msgstr "profiel %s: het saamgevoegde reël %s met konflikterende x wysigers\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "Profiel beslaglegging moet begin met 'n '/'."
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"Profiel name moet begin met 'n '/', naamruimte of sleutelwoord 'profile' of "
|
||||
"'hat'."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr ""
|
||||
msgstr "Kon nie alias skep %s -> %s\n"
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
msgstr "Profiel vlag chroot_relatiewe konflik met naamruimte_relatiewe"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
msgstr "Profiel vlag bemiddel_geskrap konflikte met delegeer_geskrap"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"Profiel vlag hechten_ontkoppelde konflikte met geen_hechten_ontkoppel"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
msgstr "Profiel vlag chroot_hechten konflik met chroot_geen_hechten"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr ""
|
||||
msgstr "Profiel vlag 'debug' is nie meer geldig."
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr ""
|
||||
msgstr "Ongeldige profiel vlag: %s."
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
@@ -418,23 +439,29 @@ msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
"Ongeldige modus, in ontken reëls 'x' moet nie voorafgegaan word deur exec "
|
||||
"kwalifiseerder 'i', 'p', of 'u'"
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
"Ongeldige modus, 'x' moet voorafgegaan word deur exec kwalifiseerder 'i', "
|
||||
"'p', 'c', of 'u'"
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
"Ongeldige modus, 'x' moet voorafgegaan word deur exec kwalifiseerder 'i', "
|
||||
"'p', of 'u'"
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr ""
|
||||
msgstr "Assert: `network_rule' ongeldige protokol terugstuur."
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr ""
|
||||
msgstr "Assert: `change_profile' teruggekeer NULL."
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
@@ -442,28 +469,28 @@ msgstr "Beweer: `hat-reël' het NUL teruggestuur."
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr ""
|
||||
msgstr "Assert: 'local_profile rule' teruggekeer NULL."
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr ""
|
||||
msgstr "Unset boolean veranderlike %s gebruik in if-uitdrukking"
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr ""
|
||||
msgstr "onveilige reël ontbreek exec toestemmings"
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr ""
|
||||
msgstr "subset kan slegs gebruik word met skakel reëls."
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
msgstr "skakel en exec perms konflik op 'n lêer reël met behulp van ->"
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
msgstr "skakel perms word nie toegelaat op 'n vernoem profiel oorgang.\n"
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#, c-format
|
||||
@@ -473,22 +500,22 @@ msgstr "ontbreek daar ’n reëleindkarakter? (inskrywing: %s)"
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
msgstr "Ongeldig netwerk inskrywing."
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr ""
|
||||
msgstr "Ongeldige capvermoë %s."
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor parser fout vir %s%s%s by lyn %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor parser fout,%s%s lyn %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -514,6 +541,8 @@ msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
"close }\n"
|
||||
msgstr ""
|
||||
"%s: Regex groepering fout: Unclosed groepering of karakter klas, verwag tans "
|
||||
"sluit }\n"
|
||||
|
||||
#: ../parser_regex.c:351 ../parser_regex.c:357
|
||||
#, c-format
|
||||
@@ -528,12 +557,12 @@ msgstr "%s: Kan insetreël '%s' nie ontleed nie\n"
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Ongeldig profiel naam '%s' - slegte gereelde uitdrukking\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "FOUT samesmelting reëls vir profiele %s, kon nie laai nie\n"
|
||||
|
||||
#: ../parser_policy.c:234
|
||||
#, c-format
|
||||
@@ -542,21 +571,24 @@ msgid ""
|
||||
"\t'*', '?', character ranges, and alternations are not allowed.\n"
|
||||
"\t'**' may only be used at the end of a rule.\n"
|
||||
msgstr ""
|
||||
"FOUT profiel %s bevat beleid elemente nie bruikbaar met hierdie kern:\n"
|
||||
"\t'*', '?', karakter reekse, en alternations is nie toegelaat.\n"
|
||||
"\t'**' mag enigste wees gebruik an die einde van 'n rule.\n"
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "FOUT verwerking regexs vir profiel %s, misluk om laai\n"
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "FOUT uitbrei tans veranderlikes vir praofiel %s, misluk om laai\n"
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr ""
|
||||
msgstr "FOUT bygevoeg hoed toegang reël vir profiel %s\n"
|
||||
|
||||
#: ../parser_policy.c:490 ../parser_policy.c:271
|
||||
#, c-format
|
||||
@@ -566,17 +598,17 @@ msgstr "FOUT in profiel %s, het misluk om te laai\n"
|
||||
#: ../parser_policy.c:675
|
||||
#, c-format
|
||||
msgid "%s: Errors found during postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Foute gevind tydens naverwerking. Aborteer tans.\n"
|
||||
|
||||
#: ../parser_policy.c:682 ../parser_policy.c:704
|
||||
#, c-format
|
||||
msgid "%s: Errors found during regex postprocess. Aborting.\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Foute gevind tydens regex naverwerking. Aborteer tans.\n"
|
||||
|
||||
#: ../parser_policy.c:689
|
||||
#, c-format
|
||||
msgid "%s: Errors found during postprocess. Aborting.\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Foute gevind tydens na-proses. Aborteer tans.\n"
|
||||
|
||||
#: ../parser_policy.c:696
|
||||
#, c-format
|
||||
@@ -587,161 +619,162 @@ msgstr ""
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Kon nie proses -insluit gids '%s' in '%s'"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "Funksie buffer volle."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Uit van geheue"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Kan nie kasgids skep nie: %s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Lêer in kas directory plek: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Kan nie kasgids opdateer: %s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "interne: onverwagte DBUS modus karakter '%c' in insette"
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Interne fout gegenereer ongeldig DBus perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "ontken voorvoegsel nie toegelaat"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op reëls berg"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toelaat op dbus reëls"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toelaat op capvermoë reëls"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "ongeldig berg voorwaardelike %s%s"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "slegte berg reël"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "hegpunt voorwaardes tans nie ondersteun nie"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "ongeldig pivotroot voorwaardelike '%s'"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
"%s: Regex groepering fout: Ongeldig naby ], geen bypassende oop [ bespeur\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Regex groepering fout: Oorskry maksimum nes van {}\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "FOUT verwerking beleiddb reëls vir profiel %s, kon nie laai nie\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "FOUT vervanging van aliasse vir profiel %s, misluk om laai\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nie in staat om skryf %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: Kon nie lees binêre profiel of kaslêer %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "Fout: Kon nie lees kaslêer '%s', huppel tans...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interne: onverwagte %s modus karakter '%c' in inset"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Interne fout gegenereer ongeldig %s perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op reëls berg"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op dbus reëls"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op sein reëls"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op ptrace reëls"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op unix reëls"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "eienaar voorvoegsel nie toegelaat op capvermoë reëls"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "dbus reël: ongeldig voorwaardelike groep %s=()"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "unix reël: ongeldig voorwaardelike groep %s=()"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Regex fout: trailing '\\' ontsnapping karakter\n"
|
||||
|
@@ -1,14 +1,14 @@
|
||||
# Translations for apparmor_parser
|
||||
# Copyright (C) 2024 YEAR Canonical Ltd
|
||||
# This file is distributed under the same license as the AppArmor package.
|
||||
# John Johansen <john.johansen@canonical.com>, 2011.
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Canonical Ltd
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n"
|
||||
"POT-Creation-Date: 2024-08-31 15:55-0700\n"
|
||||
"POT-Creation-Date: 2025-02-18 07:32-0800\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"
|
||||
@@ -326,7 +326,7 @@ msgstr ""
|
||||
#: parser_yacc.y:744 parser_yacc.y:1073 parser_yacc.y:1160 parser_yacc.y:1169
|
||||
#: parser_yacc.y:1173 parser_yacc.y:1183 parser_yacc.y:1193 parser_yacc.y:1287
|
||||
#: parser_yacc.y:1365 parser_yacc.y:1561 parser_yacc.y:1569 parser_yacc.y:1619
|
||||
#: parser_yacc.y:1624 parser_yacc.y:1701 parser_yacc.y:1750 ../network.cc:899
|
||||
#: parser_yacc.y:1624 parser_yacc.y:1701 parser_yacc.y:1750 ../network.cc:945
|
||||
#: ../af_unix.cc:197 ../all_rule.cc:102 ../all_rule.cc:131
|
||||
msgid "Memory allocation error."
|
||||
msgstr ""
|
||||
@@ -411,12 +411,12 @@ msgid "AppArmor parser error: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
#: ../parser_merge.c:71 ../parser_merge.c:74
|
||||
#: ../parser_merge.c:71 ../parser_merge.c:77
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#: ../parser_merge.c:93 ../parser_merge.c:97
|
||||
#: ../parser_merge.c:93 ../parser_merge.c:100
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
@@ -542,7 +542,7 @@ msgstr ""
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244
|
||||
#: ../network.cc:484
|
||||
#: ../network.cc:515
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
|
||||
@@ -830,16 +830,16 @@ msgstr ""
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_common.c:112 ../parser_common.c:134
|
||||
#: ../parser_common.c:112 ../parser_common.c:139
|
||||
#, c-format
|
||||
msgid "%s from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_common.c:113 ../parser_common.c:135
|
||||
#: ../parser_common.c:113 ../parser_common.c:140
|
||||
msgid "Warning converted to Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_common.c:113 ../parser_common.c:135
|
||||
#: ../parser_common.c:113 ../parser_common.c:140
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
@@ -1051,13 +1051,13 @@ msgstr ""
|
||||
msgid "Internal: unexpected %s perms character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:1098
|
||||
#: ../parser_misc.c:1100
|
||||
msgid ""
|
||||
"Invalid perms, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:1102
|
||||
#: ../parser_misc.c:1104
|
||||
msgid "Invalid perms, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
@@ -1091,16 +1091,16 @@ msgstr ""
|
||||
msgid "attach_disconnected_path value must begin with a /"
|
||||
msgstr ""
|
||||
|
||||
#: ../mount.cc:897
|
||||
#: ../mount.cc:903
|
||||
msgid ""
|
||||
"The use of source as mount point for propagation type flags is deprecated.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../network.h:200
|
||||
#: ../network.h:202
|
||||
msgid "priority prefix not allowed on network rules"
|
||||
msgstr ""
|
||||
|
||||
#: ../network.h:204
|
||||
#: ../network.h:206
|
||||
msgid "owner prefix not allowed on network rules"
|
||||
msgstr ""
|
||||
|
||||
|
741
parser/po/be.po
Normal file
741
parser/po/be.po
Normal file
@@ -0,0 +1,741 @@
|
||||
# Belarusian translation for apparmor
|
||||
# Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020
|
||||
# This file is distributed under the same license as the apparmor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2020-05-03 16:54+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Belarusian <be@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2020-05-04 04:32+0000\n"
|
||||
"X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
msgid "Bad write position\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
msgid "Permission denied\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
msgid "Out of memory\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
msgid "Profile does not match signature\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
msgid "Profile already exists\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||
msgid "Profile doesn't exist\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
#: ../parser_interface.c:118 ../parser_interface.c:142
|
||||
#, c-format
|
||||
msgid "%s: ASSERT: Invalid option: %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:147 ../parser_interface.c:150
|
||||
#: ../parser_interface.c:127
|
||||
#, c-format
|
||||
msgid "Addition succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:151 ../parser_interface.c:154
|
||||
#: ../parser_interface.c:131
|
||||
#, c-format
|
||||
msgid "Replacement succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:155 ../parser_interface.c:158
|
||||
#: ../parser_interface.c:135
|
||||
#, c-format
|
||||
msgid "Removal succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:251 ../parser_interface.c:254
|
||||
#, c-format
|
||||
msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
#: ../parser_interface.c:518 ../parser_interface.c:669
|
||||
#, c-format
|
||||
msgid "Unable to open %s - %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:776 ../parser_interface.c:768
|
||||
#: ../parser_interface.c:543
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove ^%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:789 ../parser_interface.c:781
|
||||
#: ../parser_interface.c:556
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove %s:%s."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:810 ../parser_interface.c:802
|
||||
msgid "unable to create work area\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:818 ../parser_interface.c:810
|
||||
#, c-format
|
||||
msgid "unable to serialize profile %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:829 ../parser_interface.c:916
|
||||
#: ../parser_interface.c:821 ../parser_interface.c:908
|
||||
#: ../parser_interface.c:582
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
#, c-format
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
msgid "(network_mode) Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
msgid "%s: Could not allocate memory for subdomainbase mount point\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
"Use --subdomainfs to override.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Warning! You've set this program setuid root.\n"
|
||||
"Anybody who can run this program can update your AppArmor profiles.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227
|
||||
#: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586
|
||||
#: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960
|
||||
#: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119
|
||||
#: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015
|
||||
#: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431
|
||||
#: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537
|
||||
#: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030
|
||||
#: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092
|
||||
#: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234
|
||||
#: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385
|
||||
#: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133
|
||||
#: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472
|
||||
#: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130
|
||||
#: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190
|
||||
#: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490
|
||||
#: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639
|
||||
#: ../network.c:314 ../af_unix.cc:203
|
||||
msgid "Memory allocation error."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#, c-format
|
||||
msgid "%s: Errors found in file. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339
|
||||
msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
"to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626
|
||||
#: ../parser_variable.c:229
|
||||
#, c-format
|
||||
msgid "AppArmor parser error: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#, c-format
|
||||
msgid "missing an end of line character? (entry: %s)"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
msgid "%s: Illegal open {, nesting groupings not allowed\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Invalid number of items between {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close }, no matching open { detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
"close }\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:351 ../parser_regex.c:357
|
||||
#, c-format
|
||||
msgid "%s: Internal buffer overflow detected, %d characters exceeded\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377
|
||||
#, c-format
|
||||
msgid "%s: Unable to parse input line '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:234
|
||||
#, c-format
|
||||
msgid ""
|
||||
"ERROR profile %s contains policy elements not usable with this kernel:\n"
|
||||
"\t'*', '?', character ranges, and alternations are not allowed.\n"
|
||||
"\t'**' may only be used at the end of a rule.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:490 ../parser_policy.c:271
|
||||
#, c-format
|
||||
msgid "ERROR in profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:675
|
||||
#, c-format
|
||||
msgid "%s: Errors found during postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:682 ../parser_policy.c:704
|
||||
#, c-format
|
||||
msgid "%s: Errors found during regex postprocess. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:689
|
||||
#, c-format
|
||||
msgid "%s: Errors found during postprocess. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:696
|
||||
#, c-format
|
||||
msgid "%s: Errors found in combining rules postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:720
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:736
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:752
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:768
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:794
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
216
parser/po/ca.po
216
parser/po/ca.po
@@ -8,33 +8,33 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 01:59+0000\n"
|
||||
"Last-Translator: Christian Boltz <Unknown>\n"
|
||||
"PO-Revision-Date: 2024-09-14 11:03+0000\n"
|
||||
"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
|
||||
"Language-Team: Catalan\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2024-09-15 07:16+0000\n"
|
||||
"X-Generator: Launchpad (build 1b1ed1ad2dbfc71ee62b5c5491c975135a771bf0)\n"
|
||||
"Language: ca\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr ""
|
||||
msgstr "Error: Sense memòria.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr ""
|
||||
msgstr "Error: basedir %s no és un directori, s'omet.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr ""
|
||||
msgstr "Error: no s'ha pogut afegir el directori %s al camí de cerca.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr ""
|
||||
msgstr "Error: no s'ha pogut assignar memòria.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
msgid "Bad write position\n"
|
||||
@@ -50,7 +50,7 @@ msgstr "Sense memòria\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "No s'ha pogut copiar el perfil: adreça de memòria incorrecta\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
@@ -62,7 +62,7 @@ msgstr "El perfil no coincideix amb la signatura\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr ""
|
||||
msgstr "La versió del perfil no és compatible amb el mòdul Apparmor\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
msgid "Profile already exists\n"
|
||||
@@ -75,11 +75,13 @@ msgstr "El perfil no existeix\n"
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
"S'ha denegat el permís; s'ha intentat carregar un perfil mentre està "
|
||||
"confinat?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "Error desconegut (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
@@ -109,7 +111,7 @@ msgstr "%s: no es pot escriure a l'stdout\n"
|
||||
#: ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: no s'ha pogut escriure al fitxer de sortida\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
@@ -147,11 +149,11 @@ msgstr ""
|
||||
#: ../parser_interface.c:446
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
msgstr "el perfil %s de les regles de xarxa no està obligat\n"
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "Tipus de patró desconegut\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
@@ -164,13 +166,13 @@ msgstr "No es pot obrir %s - %s\n"
|
||||
#: ../parser_interface.c:543
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove ^%s\n"
|
||||
msgstr ""
|
||||
msgstr "Error d'assignació de memòria: no es pot eliminar ^%s\n"
|
||||
|
||||
#: ../parser_interface.c:789 ../parser_interface.c:781
|
||||
#: ../parser_interface.c:556
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove %s:%s."
|
||||
msgstr ""
|
||||
msgstr "Error d'assignació de memòria: no es pot eliminar %s:%s."
|
||||
|
||||
#: ../parser_interface.c:810 ../parser_interface.c:802
|
||||
msgid "unable to create work area\n"
|
||||
@@ -193,31 +195,32 @@ msgstr "%s: no es pot escriure tota l'entrada del perfil\n"
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
"%s: No s'ha pogut escriure l'entrada de perfil sencera a la memòria cau\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "No s'ha pogut obrir «%s»"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "ha fallat fstat per a «%s»"
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
msgstr "opendir ha fallat «%s»"
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "stat ha fallat per a «%s»"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "No s'ha pogut obrir «%s» a «%s»"
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
@@ -227,17 +230,17 @@ msgstr "S'ha trobat un caràcter inesperat: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "Les declaracions de variables no accepten comes finals"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
msgid "(network_mode) Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
msgstr "(networkmode) S'ha trobat un caràcter inesperat: «%s»"
|
||||
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "Avís de %s (%s%slínia %d): %s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
@@ -252,6 +255,8 @@ msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
"Use --subdomainfs to override.\n"
|
||||
msgstr ""
|
||||
"Avís: no s'ha pogut trobar un fs adequat a %s, està muntat?\n"
|
||||
"Utilitzeu --subdomainfs per a substituir.\n"
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#, c-format
|
||||
@@ -259,6 +264,8 @@ msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s: Ho sento. Necessiteu privilegis de root per a executar aquest programa.\n"
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#, c-format
|
||||
@@ -267,12 +274,16 @@ msgid ""
|
||||
"Anybody who can run this program can update your AppArmor profiles.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s: Avís! Heu establert el setuid d'aquest programa a root.\n"
|
||||
"Qualsevol persona que pugui executar aquest programa pot actualitzar els "
|
||||
"perfils de l'AppArmor.\n"
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "Error: no s'ha pogut llegir el perfil %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227
|
||||
#: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586
|
||||
@@ -298,12 +309,12 @@ msgstr "S'ha produït un error d'assignació de memòria."
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "La càrrega a la memòria cau ha estat correcta per a «%s».\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "S'ha recarregat a la memòria cau amb èxit per a «%s».\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#, c-format
|
||||
@@ -315,11 +326,14 @@ msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
msgstr ""
|
||||
"Els classificadors «RWLIMX» en majúscules estan obsolets, si us plau "
|
||||
"convertiu-los a minúscules\n"
|
||||
"Vegeu la pàgina del manual apparmor.d(5) per a més detalls.\n"
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr ""
|
||||
msgstr "Els perms del conflicte «a» i «w» són mútuament excloents."
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
@@ -333,12 +347,17 @@ msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
"to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n"
|
||||
msgstr ""
|
||||
"El qualificador d'exec no confiat (%c%c) permet passar algunes variables "
|
||||
"d'entorn perilloses al procés no confiat; «man 5 apparmor.d» per als "
|
||||
"detalls.\n"
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"El qualificador d'execució «%c» no és vàlid, ja s'ha especificat un "
|
||||
"qualificador conflictiu"
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
@@ -346,22 +365,24 @@ msgstr ""
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"El qualificador d'execució «%c%c» no és vàlid, ja s'ha especificat un "
|
||||
"qualificador conflictiu"
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Intern: el caràcter de mode «%c» no és esperat a l'entrada"
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr ""
|
||||
msgstr "Error intern generat un perm 0x%llx no vàlid\n"
|
||||
|
||||
#: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626
|
||||
#: ../parser_variable.c:229
|
||||
#, c-format
|
||||
msgid "AppArmor parser error: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Error de l'analitzador AppArmor: %s\n"
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
@@ -370,47 +391,56 @@ msgstr "No s'han pogut fusionar les entrades. Sense memòria\n"
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
msgstr "perfil %s: té la regla fusionada %s amb modificadors X conflictius\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "L'adjunt del perfil ha de començar amb una «/»."
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"Els noms de perfil han de començar amb un '/', espai de noms o paraula clau "
|
||||
"'profile' o 'hat'."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr ""
|
||||
msgstr "No s'ha pogut crear l'àlies %s -> %s\n"
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
"L'indicador de perfil chrootrelative entra en conflicte amb "
|
||||
"namespace_relative"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
"L'indicador del perfil mediate_deleted entre en conflicte amb "
|
||||
"delegate_deleted"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"L'indicador de perfil attach_disconnected entra en conflicte amb "
|
||||
"no_attach_disconnected"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
"El perfil de l'etiqueta chroot_attach entra en conflicte amb chroot_noattach"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr ""
|
||||
msgstr "L'indicador de perfil «debug» ja no és vàlid."
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr ""
|
||||
msgstr "Indicador de perfil no vàlid: %s."
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
@@ -422,23 +452,29 @@ msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
"El mode no és vàlid, a les regles de denegació «x» no s'ha de precedir per "
|
||||
"«i», «p» o «u»"
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
"El mode no és vàlid, «x» ha d'anar precedit del qualificador «i», «p», «c» o "
|
||||
"«u»"
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
"El mode no és vàlid, «x» ha d'anar precedit del qualificador exec «i», «p» o "
|
||||
"«u»"
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr ""
|
||||
msgstr "Assert: «network_rule» retorna un protocol no vàlid."
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr ""
|
||||
msgstr "Confirmació: «change_profile» ha retornat NULL."
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
@@ -446,28 +482,32 @@ msgstr "Confirmació: 'hat rule' ha retornat NULL."
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr ""
|
||||
msgstr "Confirmació: «local_profile rule» ha retornat NULL."
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr ""
|
||||
"No s'ha establert la variable booleana %s utilitzada a l'expressió if"
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr ""
|
||||
msgstr "manca permisos d'execució per a la regla insegura"
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr ""
|
||||
msgstr "el subconjunt només es pot utilitzar amb regles d'enllaç."
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
"l'enllaç i els permisos exec entren en conflicte amb una regla de fitxer "
|
||||
"utilitzant ->"
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
"no es permeten permisos d'enllaç en una transició de perfil amb nom.\n"
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#, c-format
|
||||
@@ -477,22 +517,22 @@ msgstr "falta un caràcter de final de línia? (entrada: %s)"
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
msgstr "Entrada de xarxa no vàlida."
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr ""
|
||||
msgstr "Capacitat no vàlida %s."
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Error de l'analitzador AppArmor per a %s%s%s a la línia %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Error de l'analitzador AppArmor, %s%s línia %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -521,6 +561,8 @@ msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
"close }\n"
|
||||
msgstr ""
|
||||
"%s: error d'agrupament d'expressions regulars: agrupació sense tancar o "
|
||||
"classe de caràcters, esperant tancar }\n"
|
||||
|
||||
#: ../parser_regex.c:351 ../parser_regex.c:357
|
||||
#, c-format
|
||||
@@ -538,11 +580,14 @@ msgstr "%s: no es pot analitzar la línia d'entrada '%s'\n"
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
"%s: el nom del perfil «%s» no és vàlid - expressió regular incorrecta\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"S'ha produït un ERROR en fusionar les regles per al perfil %s, no s'ha pogut "
|
||||
"carregar\n"
|
||||
|
||||
#: ../parser_policy.c:234
|
||||
#, c-format
|
||||
@@ -551,21 +596,28 @@ msgid ""
|
||||
"\t'*', '?', character ranges, and alternations are not allowed.\n"
|
||||
"\t'**' may only be used at the end of a rule.\n"
|
||||
msgstr ""
|
||||
"El perfil d'ERROR %s conté elements de política no usables amb aquest "
|
||||
"nucli:\n"
|
||||
"\t'*', '?', intervals de caràcters i alternances no estan permesos.\n"
|
||||
"\t«**» només es pot utilitzar al final d'una regla.\n"
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"S'ha produït un ERROR en processar les expressions regulars del perfil %s, "
|
||||
"no s'ha pogut carregar\n"
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"ERROR en expandir les variables del perfil %s, no s'ha pogut carregar\n"
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr ""
|
||||
msgstr "ERROR en afegir la regla d'accés al barret per al perfil %s\n"
|
||||
|
||||
#: ../parser_policy.c:490 ../parser_policy.c:271
|
||||
#, c-format
|
||||
@@ -576,16 +628,20 @@ msgstr "ERROR al perfil %s, no s'ha pogut carregar\n"
|
||||
#, c-format
|
||||
msgid "%s: Errors found during postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
"%s: S'han trobat errors durant el postprocessament. S'està avortant.\n"
|
||||
|
||||
#: ../parser_policy.c:682 ../parser_policy.c:704
|
||||
#, c-format
|
||||
msgid "%s: Errors found during regex postprocess. Aborting.\n"
|
||||
msgstr ""
|
||||
"%s: S'han trobat errors durant el postprocés de l'expressió regular. S'està "
|
||||
"avortant.\n"
|
||||
|
||||
#: ../parser_policy.c:689
|
||||
#, c-format
|
||||
msgid "%s: Errors found during postprocess. Aborting.\n"
|
||||
msgstr ""
|
||||
"%s: S'han trobat errors durant el postprocessament. S'està avortant.\n"
|
||||
|
||||
#: ../parser_policy.c:696
|
||||
#, c-format
|
||||
@@ -597,161 +653,171 @@ msgstr ""
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "No s'ha pogut processar el directori d'inclusió «%s» a «%s»"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "Memòria intermèdia de funcions plena."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Sense memòria"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "No es pot crear el directori de la memòria cau: %s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Fitxer a la ubicació del directori de la memòria cau: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "No es pot actualitzar el directori de la memòria cau: %s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Intern: el caràcter «%c» del mode DBus no és esperat a l'entrada"
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "S'ha produït un error intern al DBus perm 0x%x no vàlid\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix de denegació"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "el prefix propietari no permet les regles de muntatge"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "el prefix del propietari no permet a les regles de dbus"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "el prefix del propietari no permet les regles de capacitat"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "el muntatge condicional %s%s no és vàlid"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "regla de muntatge incorrecta"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "les condicions del punt de muntatge no són compatibles actualment"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "la condició «%s» de l'arrel dinàmica no és vàlida"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
"%s: error d'agrupament d'expressions regulars: tancament invàlid ], no s'ha "
|
||||
"trobat cap obert coincident [ detectat\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
"%s: Error d'agrupament d'expressions regulars: s'ha superat la imbricació "
|
||||
"màxima de {}\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"S'ha produït un error en processar les regles policydb per al perfil %s, no "
|
||||
"s'ha pogut carregar\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"ERROR en substituir els àlies del perfil %s, no s'ha pogut carregar\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: no s'ha pogut escriure %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
"Error: no s'ha pogut llegir el perfil binari o el fitxer de memòria cau %s: "
|
||||
"%s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
"Error: no s'ha pogut llegir el fitxer de la memòria cau «%s», s'omet...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Intern: al mode %s el caràcter «%c» no és l'esperat"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Error intern generat no vàlid %s perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari a les regles de muntatge"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari a les regles de dbus"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari a les regles del senyal"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari a les regles «ptrace»"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari a les regles unix"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "no es permet el prefix del propietari a les regles de capacitat"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regla dbus: el grup condicional %s()() no és vàlid"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regla unix: el grup condicional %s()() no és vàlid"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: error d'expressió regular: caràcter d'escapament «\\» al final\n"
|
||||
|
302
parser/po/cs.po
302
parser/po/cs.po
@@ -6,130 +6,142 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 02:07+0000\n"
|
||||
"Last-Translator: Novell Language <Unknown>\n"
|
||||
"PO-Revision-Date: 2022-03-10 18:26+0000\n"
|
||||
"Last-Translator: Marek Hladík <mhladik@seznam.cz>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2022-03-11 06:22+0000\n"
|
||||
"X-Generator: Launchpad (build 61f4697954ab70d633d14d8ceecff69a20b08a6b)\n"
|
||||
"Language: cs\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
#: ../parser_include.c:113 ../parser_include.c:111 ../parser_include.c:96
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr "Chyba: Nedostatek paměti\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#: ../parser_include.c:123 ../parser_include.c:121 ../parser_include.c:106
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr "Chyba: Základní adresář %s není adresář, přeskakuje se.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#: ../parser_include.c:137 ../parser_include.c:122
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr "Chyba: Adresář %s nelze přidat ke hledané cestě.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
#: ../parser_include.c:147 ../parser_include.c:151 ../parser_include.c:136
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr "Chyba: Nelze přidělit paměť\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
#: ../parser_interface.c:52
|
||||
msgid "Bad write position\n"
|
||||
msgstr "Špatná pozice zápisu\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
#: ../parser_interface.c:55
|
||||
msgid "Permission denied\n"
|
||||
msgstr "Oprávnění odepřeno\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
#: ../parser_interface.c:58
|
||||
msgid "Out of memory\n"
|
||||
msgstr "Nedostatek paměti\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
#: ../parser_interface.c:61
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "Nelze zkopírovat profil: Špatná adresa paměti\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
#: ../parser_interface.c:64
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr "Profil neodpovídá protokolu\n"
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
#: ../parser_interface.c:67
|
||||
msgid "Profile does not match signature\n"
|
||||
msgstr "Profil neodpovídá podpisu\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
#: ../parser_interface.c:70
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr "Modul Apparmor nepodporuje verzi profilu.\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
#: ../parser_interface.c:73
|
||||
msgid "Profile already exists\n"
|
||||
msgstr "Profil již existuje\n"
|
||||
|
||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||
#: ../parser_interface.c:76
|
||||
msgid "Profile doesn't exist\n"
|
||||
msgstr "Profil neexistuje\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
#: ../parser_interface.c:79
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
msgstr "Přístup odepřen. Pokoušíte se načíst profil, i přes jistá omezeni?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#: ../parser_interface.c:82
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "Neznámá chyba (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119 ../parser_interface.c:96
|
||||
#: ../parser_interface.c:100
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr "%s: Nelze přidat \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#: ../parser_interface.c:101 ../parser_interface.c:105
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr "%s: Nelze nahradit \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#: ../parser_interface.c:106 ../parser_interface.c:110
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr "%s: Nelze odstranit \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#: ../parser_interface.c:111 ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr "%s: nelze zapisovat na standardní výstup\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#: ../parser_interface.c:115 ../parser_interface.c:119
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nelze zapsat výstupní soubor\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
#: ../parser_interface.c:118 ../parser_interface.c:142
|
||||
#: ../parser_interface.c:123 ../parser_interface.c:147
|
||||
#, c-format
|
||||
msgid "%s: ASSERT: Invalid option: %d\n"
|
||||
msgstr "%s: ASSERT: neplatná volba: %d\n"
|
||||
|
||||
#: ../parser_interface.c:147 ../parser_interface.c:150
|
||||
#: ../parser_interface.c:127
|
||||
#: ../parser_interface.c:127 ../parser_interface.c:132
|
||||
#, c-format
|
||||
msgid "Addition succeeded for \"%s\".\n"
|
||||
msgstr "Přidání uspělo pro \"%s\".\n"
|
||||
|
||||
#: ../parser_interface.c:151 ../parser_interface.c:154
|
||||
#: ../parser_interface.c:131
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:136
|
||||
#, c-format
|
||||
msgid "Replacement succeeded for \"%s\".\n"
|
||||
msgstr "Nahrazení uspělo pro \"%s\".\n"
|
||||
|
||||
#: ../parser_interface.c:155 ../parser_interface.c:158
|
||||
#: ../parser_interface.c:135
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:140
|
||||
#, c-format
|
||||
msgid "Removal succeeded for \"%s\".\n"
|
||||
msgstr "Odstranění uspělo pro \"%s\".\n"
|
||||
@@ -140,14 +152,14 @@ msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n"
|
||||
msgstr "PANIKA: chybný přírůstkový buffer %p pos %p ext %p size %d res %p\n"
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
#: ../parser_interface.c:446 ../parser_interface.c:476
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
msgstr "profilu %s nejsou vynucena síťová pravidla\n"
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "Neznámý typ vzoru\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
@@ -185,35 +197,35 @@ msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr "%s: Nelze zapsat celý záznam profilu\n"
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#: ../parser_interface.c:593 ../parser_interface.c:579
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nelze zapsat celý záznam profilu do mezipaměti\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "Nelze otevřít '%s'"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 parser_lex.l:174
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "fstat selhal pro '%s'"
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
msgstr "opendir selhal '%s'"
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "stat selhal pro '%s'"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Nelze otevřít '%s' v '%s'"
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
@@ -221,9 +233,9 @@ msgstr ""
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr "Nalezen neočekávaný znak: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 parser_lex.l:474
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "U deklarace proměnných nejsou přípustné koncové čárky"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
@@ -233,7 +245,7 @@ msgstr "(režim_sítě) Nalezen neplatný znak: '%s'"
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "Pozor na %s (%s%s řádku %d): %s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
@@ -241,6 +253,7 @@ msgid "%s: Could not allocate memory for subdomainbase mount point\n"
|
||||
msgstr "%s: Nelze alokovat paměť pro bod připojení subdomainbase\n"
|
||||
|
||||
#: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479
|
||||
#: ../parser_main.c:1444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
@@ -250,6 +263,7 @@ msgstr ""
|
||||
"Možnost lze přepsat pomocí možnosti --subdomainfs.\n"
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#: ../parser_main.c:822
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
@@ -259,6 +273,7 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#: ../parser_main.c:828
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Warning! You've set this program setuid root.\n"
|
||||
@@ -272,7 +287,7 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#: ../parser_main.c:946 ../parser_main.c:860 ../parser_main.c:1038
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr "Chyba: Nelze číst profil %s: %s.\n"
|
||||
@@ -294,26 +309,36 @@ msgstr "Chyba: Nelze číst profil %s: %s.\n"
|
||||
#: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190
|
||||
#: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490
|
||||
#: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639
|
||||
#: ../network.c:314 ../af_unix.cc:203
|
||||
#: ../network.c:314 ../af_unix.cc:203 ../parser_misc.c:215 ../parser_misc.c:939
|
||||
#: parser_yacc.y:343 parser_yacc.y:367 parser_yacc.y:533 parser_yacc.y:543
|
||||
#: parser_yacc.y:660 parser_yacc.y:741 parser_yacc.y:750 parser_yacc.y:1171
|
||||
#: parser_yacc.y:1219 parser_yacc.y:1255 parser_yacc.y:1264 parser_yacc.y:1268
|
||||
#: parser_yacc.y:1278 parser_yacc.y:1288 parser_yacc.y:1382 parser_yacc.y:1460
|
||||
#: parser_yacc.y:1592 parser_yacc.y:1597 parser_yacc.y:1674 parser_yacc.y:1692
|
||||
#: parser_yacc.y:1699 parser_yacc.y:1748 ../network.c:315 ../af_unix.cc:194
|
||||
msgid "Memory allocation error."
|
||||
msgstr "Chyba alokace paměti."
|
||||
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#: ../parser_main.c:975
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Načtení z mezipaměti pro „%s“ bylo úspěšné\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#: ../parser_main.c:979
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Opětovné načtení mezipaměti pro „%s“ bylo úspěšné\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#: ../parser_main.c:1132
|
||||
#, c-format
|
||||
msgid "%s: Errors found in file. Aborting.\n"
|
||||
msgstr "%s: Chyby v souboru. Ukončuji.\n"
|
||||
|
||||
#: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339
|
||||
#: ../parser_misc.c:532
|
||||
msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
@@ -324,16 +349,19 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
#: ../parser_misc.c:573 ../parser_misc.c:580
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr "Oprávnění 'a' a 'w' se vzájemně vylučují."
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
#: ../parser_misc.c:597
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"Exec kvalifikátor 'i' je neplatný, byl již specifikován konfliktní "
|
||||
"kvalifikátor"
|
||||
|
||||
#: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415
|
||||
#: ../parser_misc.c:608
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
@@ -345,6 +373,7 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#: ../parser_misc.c:616 ../parser_misc.c:657
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
@@ -353,6 +382,7 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
#: ../parser_misc.c:643 ../parser_misc.c:651
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
@@ -361,11 +391,13 @@ msgstr ""
|
||||
"kvalifikátor"
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#: ../parser_misc.c:699
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr "Vnitřní: Neznámý znak režimu '%c' na vstupu."
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#: ../parser_misc.c:721
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr "Vnitřní chyba způsobila neplatné perm 0x%llx\n"
|
||||
@@ -377,137 +409,148 @@ msgid "AppArmor parser error: %s\n"
|
||||
msgstr "Chyba parseru AppArmor: %s\n"
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
#: ../parser_merge.c:71
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr "Nelze sloučit záznamy. Nedostatek paměti\n"
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#: ../parser_merge.c:93
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
msgstr "profil %s: bylo sloučeno pravidlo %s s konfliktními x modifikátory\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "Příloha profilu musí začínat znakem '/'."
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 parser_yacc.y:407
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"Názvy profilů musí začínat znakem '/', jmenným prostorem nebo klíčovým "
|
||||
"slovem 'profile' nebo 'hat'."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 parser_yacc.y:449
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr "Nelze vytvořit alias %s -> %s\n"
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 parser_yacc.y:581
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
"Příznak profilu 'chroot_relative' je v konfliktu s 'namespace_relative'"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 parser_yacc.y:585
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
"Příznak profilu 'mediate_deleted' je v konfliktu s 'delegate_deleted'"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 parser_yacc.y:588
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"Příznak profilu 'connect_disconnected' je v konfliktu s "
|
||||
"'no_attach_disconnected'"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 parser_yacc.y:591
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
msgstr "Příznak profilu 'chroot_attach' je v konfliktu s 'chroot_no_attach'"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 parser_yacc.y:607
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr "Příznak profilu 'debug' již není platný."
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 parser_yacc.y:629
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr "Neplatný příznak profilu: %s."
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
#: parser_yacc.y:673
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr "Assert: `rule' vrátil NULL."
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
#: parser_yacc.y:598 parser_yacc.y:630 parser_yacc.y:677 parser_yacc.y:709
|
||||
msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
"Neplatný režim, před 'x' musí být exec kvalifikátor 'i', 'p' nebo 'u'"
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 parser_yacc.y:681
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
"Neplatný režim, před 'x' musí být exec kvalifikátor 'i', 'p', 'c' nebo 'u'"
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 parser_yacc.y:712
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr "Neplatný režim, před 'x' musí být kvalifikátor 'i', 'p' nebo 'u'."
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
#: parser_yacc.y:739
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr "Assert: `pravidlo_sítě' vrací neplatný protokol."
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 parser_yacc.y:867
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr "Assert: `změna_profilu' vrátila hodnotu NULL."
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 parser_yacc.y:905
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr "Assert: 'hat rule' vrátil NULL."
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 parser_yacc.y:914
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr "Assert: 'local_profile rule' vrátil NULL."
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 parser_yacc.y:1077
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr "Ve výrazu 'if' byla použita nenastavená booleovská proměnná %s."
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 parser_yacc.y:1181
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr "nebezpečné pravidlo nemá oprávnění ke spuštění"
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 parser_yacc.y:1148
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr "podskupina může být použita pouze s pravidly odkazů."
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 parser_yacc.y:1150
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr "link a exec perms konflikt souboru pravidel používajícím ->"
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 parser_yacc.y:1152
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr "link perms nejsou povoleny na přechodu pojmenovaného profilu.\n"
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 parser_yacc.y:1198
|
||||
#, c-format
|
||||
msgid "missing an end of line character? (entry: %s)"
|
||||
msgstr "chybí znak konce řádku? (záznam: %s)"
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244
|
||||
msgid "Invalid network entry."
|
||||
msgstr "Neplatná položka sítě."
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#: parser_yacc.y:1617
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr "Neplatná schopnost %s."
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 parser_yacc.y:1637
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Chyba parseru AppArmor pro %s%s%s na řádku %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Chyba parseru AppArmor, %s%s řádek %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -515,11 +558,13 @@ msgid "%s: Illegal open {, nesting groupings not allowed\n"
|
||||
msgstr "%s: nepovolená otvírací {, vnořené seskupování není povoleno\n"
|
||||
|
||||
#: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278
|
||||
#: ../parser_regex.c:306
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Invalid number of items between {}\n"
|
||||
msgstr "%s: Chyba seskupování regex: neplatný počet položek mezi {}\n"
|
||||
|
||||
#: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284
|
||||
#: ../parser_regex.c:312
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close }, no matching open { detected\n"
|
||||
@@ -528,6 +573,7 @@ msgstr ""
|
||||
"otevírací {\n"
|
||||
|
||||
#: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361
|
||||
#: ../parser_regex.c:403
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
@@ -542,16 +588,19 @@ msgid "%s: Internal buffer overflow detected, %d characters exceeded\n"
|
||||
msgstr "%s: Detekováno vnitřní přetečení zásobníku, přesáhlo %d znaků\n"
|
||||
|
||||
#: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377
|
||||
#: ../parser_regex.c:419
|
||||
#, c-format
|
||||
msgid "%s: Unable to parse input line '%s'\n"
|
||||
msgstr "%s: Nelze analyzovat vstupní řádku '%s'\n"
|
||||
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#: ../parser_regex.c:487
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Neplatné jméno profilu '%s' - špatný regulární výraz\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#: ../parser_policy.c:383
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -569,6 +618,7 @@ msgstr ""
|
||||
"\t'**' lze použít pouze na konci pravidla.\n"
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#: ../parser_policy.c:340
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -576,12 +626,14 @@ msgstr ""
|
||||
"načítání.\n"
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#: ../parser_policy.c:370
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"CHYBA při rozšíření proměnných pro profil %s, došlo k chybě při načítání.\n"
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#: ../parser_policy.c:363
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr "Chyba při přidání pravidla pro přístup k hat pro profil %s\n"
|
||||
@@ -613,164 +665,170 @@ msgid "%s: Errors found in combining rules postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
"%s: Nalezeny chyby při postprocesingu kombinačních pravidel. Ukončuji.\n"
|
||||
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#: parser_lex.l:180 parser_lex.l:186 parser_lex.l:187
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Nelze zpracovat vloženého adresáře '%s' v '%s'"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "Vyrovnávací paměť pro funkce je plná."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
#: ../parser_main.c:1041 ../parser_main.c:1332 ../parser_main.c:1354
|
||||
#: ../parser_misc.c:280 ../parser_misc.c:299 ../parser_misc.c:308
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Nedostatek paměti"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Nelze vytvořit adresář mezipaměti: %s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Soubor v adresáři mezipaměti: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Nelze aktualizovat adresář mezipaměti: %s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interní: Neočekávaný znak '%c' režimu DBus na vstupu"
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Interní chyba vygenerovaná neplatnou DBus perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
#: parser_yacc.y:575 parser_yacc.y:621 parser_yacc.y:700
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "deny prefix není povolen"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
#: parser_yacc.y:612 parser_yacc.y:658 parser_yacc.y:737
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není povolen"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není povolen v pravidlech pro připojení"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není povolen v pravidlech dbus"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není povolen v pravidlech schopností"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613 parser_yacc.y:1722
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "neplatná podmínka připojení %s%s"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628 parser_yacc.y:1737
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "špatné pravidlo připojení"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635 parser_yacc.y:1744
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "podmínky přípojného bodu nejsou aktuálně podporovány"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650 parser_yacc.y:1759
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "neplatný podmíněný pivotroot '%s'"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236 ../parser_regex.c:264
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
"%s: Chyba seskupení regulárních výrazů: Neplatné uzavření ], nebylo zjištěno "
|
||||
"žádné odpovídající otevření [\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256 ../parser_regex.c:284
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
"%s: Chyba seskupení regulárních výrazů: Překročen maximální počet vnoření "
|
||||
"{}\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339 ../parser_policy.c:347
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"CHYBA zpracování pravidel policydb pro profil %s, načtení se nezdařilo\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369 ../parser_policy.c:377
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "CHYBA při nahrazení aliasů pro profil %s, načtení se nezdařilo\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nelze zapsat %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "Chyba: Nelze přečíst binární profil nebo soubor mezipaměti %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "Chyba: Nelze přečíst soubor mezipaměti '%s', přeskočení...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#: ../parser_misc.c:575 ../parser_misc.c:768
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interní: V režimu %s se na vstupu vyskytl neočekávaný znak '%c'"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#: ../parser_misc.c:599 ../parser_misc.c:792
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Interní chyba vygenerovala neplatné %s perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
#: parser_yacc.y:703 parser_yacc.y:784
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není v pravidlech připojení povolen"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
#: parser_yacc.y:720 parser_yacc.y:801
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není v pravidlech dbus povolen"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
#: parser_yacc.y:736 parser_yacc.y:817
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není v pravidlech signálu povolen"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
#: parser_yacc.y:752 parser_yacc.y:833
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není v pravidlech ptrace povolen"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
#: parser_yacc.y:768 parser_yacc.y:849 parser_yacc.y:869
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není v pravidlech unixu povolen"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
#: parser_yacc.y:794 parser_yacc.y:885
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "prefix vlastníka není v pravidlech schopností povolen"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#: parser_yacc.y:1293 parser_yacc.y:1377
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "pravidlo dbus: neplatná podmíněná skupina %s=()"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#: parser_yacc.y:1371 parser_yacc.y:1455
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "unixové pravidlo: neplatná podmíněná skupina %s=()"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#: ../parser_regex.c:368 ../parser_regex.c:410
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Chyba regulárního výrazu: koncový znak escape '\\'\n"
|
||||
|
133
parser/po/es.po
133
parser/po/es.po
@@ -6,38 +6,38 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-26 03:48+0000\n"
|
||||
"Last-Translator: Monkey <monkey.libre@gmail.com>\n"
|
||||
"PO-Revision-Date: 2024-10-09 22:03+0000\n"
|
||||
"Last-Translator: Rodrigo Lledó <rodhos92@gmail.com>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2024-10-10 07:50+0000\n"
|
||||
"X-Generator: Launchpad (build 6341c735b243a0768c3cb66edf85737937cab327)\n"
|
||||
"Language: es\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr "Error: memoria insuficiente.\n"
|
||||
msgstr "Error: Memoria insuficiente.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr "Error: el directorio base %s no es un directorio. Se va a omitir.\n"
|
||||
msgstr "Error: el directorio base %s no es un directorio. Será omitido.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr ""
|
||||
"Error: no se ha podido añadir el directorio %s a la vía de búsqueda.\n"
|
||||
"Error: No se ha podido añadir el directorio %s a la ruta de búsqueda.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr "Error: no es posible asignar memoria.\n"
|
||||
msgstr "Error: la memoria no pudo ser asignada.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
msgid "Bad write position\n"
|
||||
msgstr "Posición de escritura incorrecta\n"
|
||||
msgstr "Escrito en el lugar equivocado.\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
msgid "Permission denied\n"
|
||||
@@ -45,15 +45,15 @@ msgstr "Permiso denegado\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
msgid "Out of memory\n"
|
||||
msgstr "Memoria agotada\n"
|
||||
msgstr "Sin memoria.\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr "No se puede copiar el perfil. Dirección de memoria incorrecta\n"
|
||||
msgstr "No se pudo copiar el perfil. Dirección de memoria incorrecta.\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr "El perfil no se ajusta al protocolo\n"
|
||||
msgstr "El perfil no cumple el protocolo.\n"
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
msgid "Profile does not match signature\n"
|
||||
@@ -61,7 +61,7 @@ msgstr "El perfil no coincide con la firma\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr "La versión del perfil no se admite en el módulo de Apparmor.\n"
|
||||
msgstr "Versión del perfil no compatible con el módulo Apparmor.\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
msgid "Profile already exists\n"
|
||||
@@ -73,8 +73,7 @@ msgstr "El perfil no existe\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
"Permiso denegado. ¿Intentando cargar un perfil mientras estaba confinado?\n"
|
||||
msgstr "Permiso denegado. ¿Intentó cargar un perfil restringido?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#, c-format
|
||||
@@ -140,8 +139,7 @@ msgstr "Eliminación correcta de \"%s\".\n"
|
||||
#, c-format
|
||||
msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n"
|
||||
msgstr ""
|
||||
"PANIC: incremento de buffer incorrecto; pos %p; ext %p; tamaño %p; res %d "
|
||||
"%p\n"
|
||||
"PÁNICO: error en el aumento del búfer %p pos %p ext %p size %d res %p\n"
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
@@ -186,18 +184,18 @@ msgstr "no es posible poner en serie el perfil %s\n"
|
||||
#: ../parser_interface.c:582
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr "%s: no es posible escribir todo el perfil\n"
|
||||
msgstr "%s: no es posible escribir el acceso al perfil completo\n"
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr "%s: Imposible escribir la entrada de perfil completa a la caché\n"
|
||||
msgstr "%s: no es posible escribir el acceso al perfil completo al caché\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr "No se pudo abrir '%s'"
|
||||
msgstr "No se pudo abrir «%s»"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#, c-format
|
||||
@@ -212,7 +210,7 @@ msgstr "opendir falló «%s»"
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "stat falló para «%s»"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
@@ -223,11 +221,11 @@ msgstr "No se pudo abrir «%s» en «%s»"
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
#, c-format
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr "Se ha detectado un carácter inesperado: '%s'"
|
||||
msgstr "Se ha detectado un carácter inesperado: «%s»"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "Las declaraciones de variables no aceptan comas al final"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
@@ -237,7 +235,7 @@ msgstr "(network_mode) Se ha encontrado un carácter inesperado: %s"
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "Aviso desde %s (%s%slínea %d): %s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
@@ -308,12 +306,12 @@ msgstr "Error de asignación de memoria."
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Se ha cargado caché con éxito para «%s».\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Se ha recargado caché con éxito para «%s».\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#, c-format
|
||||
@@ -391,15 +389,18 @@ msgstr "No es posible fusionar las entradas. Memoria agotada\n"
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
"el perfil %s: ha fusionado la regla %s con modificadores x en conflicto\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "El adjunto al perfil debe empezar con un «/»."
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"Los nombres del perfil deben empezar con un «/», espacio de nombre o palabra "
|
||||
"clave «profile» o «hat»."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#, c-format
|
||||
@@ -409,19 +410,24 @@ msgstr "Error al crear el alias %s -> %s\n"
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
"La marca del perfi chroot_relative está en conflicto con namespace_relative"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
"La marca del perfil mediate_deleted está en conflicto con delegate_deleted"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"La marca del perfil attach_disconnected está en conflicto con "
|
||||
"no_attach_disconnected"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
"La marca del perfil chroot_attach está en conflicto con chroot_no_attach"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
@@ -516,12 +522,12 @@ msgstr "Característica no válida %s."
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Error del analizador AppArmor para %s%s%s en la línea %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Error de análisis AppArmor,%s%s línea %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -565,7 +571,7 @@ msgstr "%s: no es posible analizar la línea de entrada '%s'\n"
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
msgstr "%s: nombre de perfil no válido «%s» - expresión regular incorrecta\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#, c-format
|
||||
@@ -631,161 +637,166 @@ msgstr ""
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "No se pudo procesar la inclusión del directorio «%s» en «%s»"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "Buffer de características lleno."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Memoria agotada"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "No se puede crear el directorio de antememoria: %s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Archivo en ubicación de directorio de caché: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "No se puede actualizar el directorio de caché: %s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interno: carácter de modo DBUS «%c» inesperado en entrada"
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Error interno generado perm DBus no válido 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "prefijo de denegación no permitido"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en reglas de montaje"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en reglas dbus"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de priopietario no permitido en reglas de capacidades"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "condicional de montaje %s%s no válido"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "regla de montaje errónea"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "condiciones de punto de montaje actualmente no soportadas"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "condicional pivotroot no válido «%s»"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
"%s: Error de agrupamiento regex: Cierre no válido ], no se detectó pareja de "
|
||||
"apertura [\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
"%s: Error de agrupamiento regex: Se excedió el máximo de anidado de {}\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"ERROR al procesar reglas policydb para el perfil %s, falló al cargar\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "ERROR al reemplazar aliases para el perfil %s, falló al cargar\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: no se pudo escribir %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
"Error: no se pudo leer archivo de perfil binario o archivo de caché %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "Error: no se pudo leer archivo de caché «%s», omitiendo...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interno: modo inesperado %s carácter «%c» en la entrada"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Un error interno ha generado un %s perm no válido 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en reglas de montaje"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en reglas de dbus"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en reglas de señal"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en reglas de ptrace"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en las reglas de Unix"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "prefijo de propietario no permitido en las reglas de capacidad"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regla dbus: grupo condicional no válido %s=()"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regla unix: grupo condicional no válido %s=()"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Error regex: arrastrando carácter de escape «\\»\n"
|
||||
|
226
parser/po/fa.po
226
parser/po/fa.po
@@ -8,132 +8,145 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2019-12-27 08:23+0000\n"
|
||||
"Last-Translator: VahidNameni <Unknown>\n"
|
||||
"PO-Revision-Date: 2023-12-31 16:22+0000\n"
|
||||
"Last-Translator: S.M.Mousavi <Unknown>\n"
|
||||
"Language-Team: Persian <fa@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-12-28 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n"
|
||||
"X-Launchpad-Export-Date: 2024-01-01 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build e1eeab5b20e19239bd7d5f36676f7a52988db88b)\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
#: ../parser_include.c:113 ../parser_include.c:111 ../parser_include.c:96
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr "خطا: خارج از حافظه.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#: ../parser_include.c:123 ../parser_include.c:121 ../parser_include.c:106
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr ""
|
||||
msgstr "خطا: basedir %s یک شاخه نیست، در حال رد کردن.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#: ../parser_include.c:137 ../parser_include.c:122
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr "خطا: امکان اضافه کردن پوشه %s به مسیر جستجو نیست.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
#: ../parser_include.c:147 ../parser_include.c:151 ../parser_include.c:136
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr ""
|
||||
msgstr "خطا: عدم توانایی تخصیص حافظه.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
#: ../parser_interface.c:52
|
||||
msgid "Bad write position\n"
|
||||
msgstr ""
|
||||
msgstr "مکان نوشتن اشتباه\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
#: ../parser_interface.c:55
|
||||
msgid "Permission denied\n"
|
||||
msgstr "مجوز صادر نگردید\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
#: ../parser_interface.c:58
|
||||
msgid "Out of memory\n"
|
||||
msgstr "خارج از حافظه\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
#: ../parser_interface.c:61
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "عدم توانایی رونوشت از نمایه: آدرس حافظه بد\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
#: ../parser_interface.c:64
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr ""
|
||||
msgstr "نمایه با پروتکل مطابقت ندارد\n"
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
#: ../parser_interface.c:67
|
||||
msgid "Profile does not match signature\n"
|
||||
msgstr "نمایه با امضا مطابقت ندارد\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
#: ../parser_interface.c:70
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr ""
|
||||
msgstr "نسخه نمایه توسط ماژول Apparmor پشتیبانی نمیشود\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
#: ../parser_interface.c:73
|
||||
msgid "Profile already exists\n"
|
||||
msgstr ""
|
||||
msgstr "نمایه موجود است\n"
|
||||
|
||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||
#: ../parser_interface.c:76
|
||||
msgid "Profile doesn't exist\n"
|
||||
msgstr ""
|
||||
msgstr "نمایه موجود نیست\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
#: ../parser_interface.c:79
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
"اجازه رد شد؛ آیا در حالیکه محدود هستید، سعی در بارگزاری یک نمایه کردید؟\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#: ../parser_interface.c:82
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "خطای ناشناخته (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119 ../parser_interface.c:96
|
||||
#: ../parser_interface.c:100
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr ""
|
||||
msgstr "%s: عدم توانایی اضافه کردن \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#: ../parser_interface.c:101 ../parser_interface.c:105
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr ""
|
||||
msgstr "%s: عدم توانایی جایگزینی \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#: ../parser_interface.c:106 ../parser_interface.c:110
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr ""
|
||||
msgstr "%s: عدم توانایی حذف \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#: ../parser_interface.c:111 ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr ""
|
||||
msgstr "%s: عدم توانایی نوشتن در stdout\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#: ../parser_interface.c:115 ../parser_interface.c:119
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: عدم توانایی نوشتن در فایل خروجی\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
#: ../parser_interface.c:118 ../parser_interface.c:142
|
||||
#: ../parser_interface.c:123 ../parser_interface.c:147
|
||||
#, c-format
|
||||
msgid "%s: ASSERT: Invalid option: %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:147 ../parser_interface.c:150
|
||||
#: ../parser_interface.c:127
|
||||
#: ../parser_interface.c:127 ../parser_interface.c:132
|
||||
#, c-format
|
||||
msgid "Addition succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "اضافه کردن \"%s\" با موفقیت انجام شد.\n"
|
||||
|
||||
#: ../parser_interface.c:151 ../parser_interface.c:154
|
||||
#: ../parser_interface.c:131
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:136
|
||||
#, c-format
|
||||
msgid "Replacement succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "جایگزینی \"%s\" با موفقیت انجام شد.\n"
|
||||
|
||||
#: ../parser_interface.c:155 ../parser_interface.c:158
|
||||
#: ../parser_interface.c:135
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:140
|
||||
#, c-format
|
||||
msgid "Removal succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "حذف \"%s\" با موفقیت انجام شد.\n"
|
||||
|
||||
#: ../parser_interface.c:251 ../parser_interface.c:254
|
||||
#, c-format
|
||||
@@ -141,33 +154,33 @@ msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
#: ../parser_interface.c:446 ../parser_interface.c:476
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "نوع الگوی ناشناخته\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
#: ../parser_interface.c:518 ../parser_interface.c:669
|
||||
#, c-format
|
||||
msgid "Unable to open %s - %s\n"
|
||||
msgstr ""
|
||||
msgstr "عدم توانایی بازکردن %s - %s\n"
|
||||
|
||||
#: ../parser_interface.c:776 ../parser_interface.c:768
|
||||
#: ../parser_interface.c:543
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove ^%s\n"
|
||||
msgstr ""
|
||||
msgstr "خطای تخصیص حافظه: عدم توانایی حذف ^%s\n"
|
||||
|
||||
#: ../parser_interface.c:789 ../parser_interface.c:781
|
||||
#: ../parser_interface.c:556
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove %s:%s."
|
||||
msgstr ""
|
||||
msgstr "خطای تخصیص حافظه: عدم توانایی حذف %s:%s."
|
||||
|
||||
#: ../parser_interface.c:810 ../parser_interface.c:802
|
||||
msgid "unable to create work area\n"
|
||||
@@ -186,7 +199,7 @@ msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#: ../parser_interface.c:593 ../parser_interface.c:579
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
@@ -196,7 +209,7 @@ msgstr ""
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 parser_lex.l:174
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
@@ -222,7 +235,7 @@ msgstr ""
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 parser_lex.l:474
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
|
||||
@@ -242,6 +255,7 @@ msgid "%s: Could not allocate memory for subdomainbase mount point\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479
|
||||
#: ../parser_main.c:1444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
@@ -249,6 +263,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#: ../parser_main.c:822
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
@@ -256,6 +271,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#: ../parser_main.c:828
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Warning! You've set this program setuid root.\n"
|
||||
@@ -264,7 +280,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#: ../parser_main.c:946 ../parser_main.c:860 ../parser_main.c:1038
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr ""
|
||||
@@ -286,26 +302,36 @@ msgstr ""
|
||||
#: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190
|
||||
#: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490
|
||||
#: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639
|
||||
#: ../network.c:314 ../af_unix.cc:203
|
||||
#: ../network.c:314 ../af_unix.cc:203 ../parser_misc.c:215 ../parser_misc.c:939
|
||||
#: parser_yacc.y:343 parser_yacc.y:367 parser_yacc.y:533 parser_yacc.y:543
|
||||
#: parser_yacc.y:660 parser_yacc.y:741 parser_yacc.y:750 parser_yacc.y:1171
|
||||
#: parser_yacc.y:1219 parser_yacc.y:1255 parser_yacc.y:1264 parser_yacc.y:1268
|
||||
#: parser_yacc.y:1278 parser_yacc.y:1288 parser_yacc.y:1382 parser_yacc.y:1460
|
||||
#: parser_yacc.y:1592 parser_yacc.y:1597 parser_yacc.y:1674 parser_yacc.y:1692
|
||||
#: parser_yacc.y:1699 parser_yacc.y:1748 ../network.c:315 ../af_unix.cc:194
|
||||
msgid "Memory allocation error."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#: ../parser_main.c:975
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#: ../parser_main.c:979
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#: ../parser_main.c:1132
|
||||
#, c-format
|
||||
msgid "%s: Errors found in file. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339
|
||||
#: ../parser_misc.c:532
|
||||
msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
@@ -313,14 +339,17 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
#: ../parser_misc.c:573 ../parser_misc.c:580
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
#: ../parser_misc.c:597
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415
|
||||
#: ../parser_misc.c:608
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
@@ -329,23 +358,27 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#: ../parser_misc.c:616 ../parser_misc.c:657
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
#: ../parser_misc.c:643 ../parser_misc.c:651
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#: ../parser_misc.c:699
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#: ../parser_misc.c:721
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr ""
|
||||
@@ -357,10 +390,12 @@ msgid "AppArmor parser error: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
#: ../parser_merge.c:71
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#: ../parser_merge.c:93
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
@@ -369,115 +404,118 @@ msgstr ""
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 parser_yacc.y:407
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 parser_yacc.y:449
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 parser_yacc.y:581
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 parser_yacc.y:585
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 parser_yacc.y:588
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 parser_yacc.y:591
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 parser_yacc.y:607
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 parser_yacc.y:629
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
#: parser_yacc.y:673
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
#: parser_yacc.y:598 parser_yacc.y:630 parser_yacc.y:677 parser_yacc.y:709
|
||||
msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 parser_yacc.y:681
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 parser_yacc.y:712
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
#: parser_yacc.y:739
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 parser_yacc.y:867
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 parser_yacc.y:905
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 parser_yacc.y:914
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 parser_yacc.y:1077
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 parser_yacc.y:1181
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 parser_yacc.y:1148
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 parser_yacc.y:1150
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 parser_yacc.y:1152
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 parser_yacc.y:1198
|
||||
#, c-format
|
||||
msgid "missing an end of line character? (entry: %s)"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#: parser_yacc.y:1617
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 parser_yacc.y:1637
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
@@ -493,17 +531,20 @@ msgid "%s: Illegal open {, nesting groupings not allowed\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278
|
||||
#: ../parser_regex.c:306
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Invalid number of items between {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284
|
||||
#: ../parser_regex.c:312
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close }, no matching open { detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361
|
||||
#: ../parser_regex.c:403
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
@@ -516,16 +557,19 @@ msgid "%s: Internal buffer overflow detected, %d characters exceeded\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377
|
||||
#: ../parser_regex.c:419
|
||||
#, c-format
|
||||
msgid "%s: Unable to parse input line '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#: ../parser_regex.c:487
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#: ../parser_policy.c:383
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -539,16 +583,19 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#: ../parser_policy.c:340
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#: ../parser_policy.c:370
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#: ../parser_policy.c:363
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr ""
|
||||
@@ -578,7 +625,7 @@ msgstr ""
|
||||
msgid "%s: Errors found in combining rules postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#: parser_lex.l:180 parser_lex.l:186 parser_lex.l:187
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
@@ -588,7 +635,8 @@ msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
#: ../parser_main.c:1041 ../parser_main.c:1332 ../parser_main.c:1354
|
||||
#: ../parser_misc.c:280 ../parser_misc.c:299 ../parser_misc.c:308
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
|
||||
@@ -617,11 +665,11 @@ msgstr ""
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
#: parser_yacc.y:575 parser_yacc.y:621 parser_yacc.y:700
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
#: parser_yacc.y:612 parser_yacc.y:658 parser_yacc.y:737
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
|
||||
@@ -637,41 +685,41 @@ msgstr ""
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613 parser_yacc.y:1722
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628 parser_yacc.y:1737
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635 parser_yacc.y:1744
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650 parser_yacc.y:1759
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236 ../parser_regex.c:264
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256 ../parser_regex.c:284
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339 ../parser_policy.c:347
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369 ../parser_policy.c:377
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -691,51 +739,51 @@ msgstr ""
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#: ../parser_misc.c:575 ../parser_misc.c:768
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#: ../parser_misc.c:599 ../parser_misc.c:792
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:703
|
||||
#: parser_yacc.y:703 parser_yacc.y:784
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:720
|
||||
#: parser_yacc.y:720 parser_yacc.y:801
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:736
|
||||
#: parser_yacc.y:736 parser_yacc.y:817
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:752
|
||||
#: parser_yacc.y:752 parser_yacc.y:833
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:768
|
||||
#: parser_yacc.y:768 parser_yacc.y:849 parser_yacc.y:869
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:794
|
||||
#: parser_yacc.y:794 parser_yacc.y:885
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#: parser_yacc.y:1293 parser_yacc.y:1377
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#: parser_yacc.y:1371 parser_yacc.y:1455
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#: ../parser_regex.c:368 ../parser_regex.c:410
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
|
@@ -16,14 +16,14 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2014-05-01 19:38+0000\n"
|
||||
"Last-Translator: Jiri Grönroos <Unknown>\n"
|
||||
"PO-Revision-Date: 2021-04-11 15:29+0000\n"
|
||||
"Last-Translator: Markus Mikkonen <Unknown>\n"
|
||||
"Language-Team: Suomi <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2021-04-12 06:41+0000\n"
|
||||
"X-Generator: Launchpad (build f3c8a1aed7c0b9bc4f5601dbf2698b30e1ab66f1)\n"
|
||||
"Language: fi\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
@@ -643,7 +643,7 @@ msgstr ""
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Muisti lopussa"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
|
@@ -11,49 +11,49 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 02:58+0000\n"
|
||||
"Last-Translator: Krešimir Jozić <Unknown>\n"
|
||||
"PO-Revision-Date: 2021-10-03 10:20+0000\n"
|
||||
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
|
||||
"Language-Team: Croatian <en@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2021-10-04 06:23+0000\n"
|
||||
"X-Generator: Launchpad (build 1ce78163f6a09ed42b4201fe7d3f0e3a2eba7d02)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr "Greška: Nedovoljno memorije.\n"
|
||||
msgstr "Greška: ponestalo memorije.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr "Greška: temeljni direktorij %s nije direktorij, preskačem.\n"
|
||||
msgstr "Greška: osnovni direktorij %s nije direktorij, preskačem.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr "Greška: Ne mogu dodati direktorij %s u putanju za pretragu.\n"
|
||||
msgstr "Greška: nemoguće dodavanje direktorija %s u putanju pretrage.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr "Greška: Ne mogu rezervirati memoriju.\n"
|
||||
msgstr "Greška: nemoguće dodijeliti memoriju.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
msgid "Bad write position\n"
|
||||
msgstr "Neipravan položaj za zapisivanje\n"
|
||||
msgstr "Netočan položaj zapisivanja\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
msgid "Permission denied\n"
|
||||
msgstr "Pristup odbijen\n"
|
||||
msgstr "Pristup uskraćen\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
msgid "Out of memory\n"
|
||||
msgstr "Nema dovoljno memorije\n"
|
||||
msgstr "Ponestalo memorije\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "Nemoguće kopiranje profila: neispravna memorijska adresa\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
@@ -65,7 +65,7 @@ msgstr "Profil ne odgovara potpisu\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr "Verzija profila nije podržana od Apparmor modula\n"
|
||||
msgstr "Inačicu profila ne podržava Apparmor modul\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
msgid "Profile already exists\n"
|
||||
@@ -77,42 +77,42 @@ msgstr "Profil ne postoji\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
msgstr "Pristup odbijen, pokušaj učitavanja profila tijekom ograničenja?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "Nepoznata greška (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr "%s: Ne mogu dodati \"%s\". "
|
||||
msgstr "%s: Nemoguće je dodati \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr "%s: Ne mogu zamijeniti \"%s\". "
|
||||
msgstr "%s: Nemoguće je zamijeniti \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr "%s : Ne mogu ukloniti \"%s\". "
|
||||
msgstr "%s : Nemoguće je ukloniti \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr "%s: Ne mogu pisati na stdout\n"
|
||||
msgstr "%s: Nemoguće je zapisivati u stdout\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nemoguće je zapisivati u izlaznu datoteku\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
|
368
parser/po/ka.po
368
parser/po/ka.po
@@ -9,267 +9,293 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-14 22:25+0000\n"
|
||||
"Last-Translator: George Machitidze <giomac@gmail.com>\n"
|
||||
"PO-Revision-Date: 2023-06-26 15:06+0000\n"
|
||||
"Last-Translator: NorwayFun <temuri.doghonadze@gmail.com>\n"
|
||||
"Language-Team: Georgian <i18n@suse.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2023-06-27 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build aedf8597c50c1abc5fb7f9e871e686dfcb381fde)\n"
|
||||
"Language: ka\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
#: ../parser_include.c:113 ../parser_include.c:111 ../parser_include.c:96
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr ""
|
||||
msgstr "შეცდომა: არასაკმარისი მეხსიერება.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#: ../parser_include.c:123 ../parser_include.c:121 ../parser_include.c:106
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr ""
|
||||
"შეცდომა: საბაზისო საქაღალდე %s საქაღალდეს არ წარმოადგენს. გამოტოვება\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#: ../parser_include.c:137 ../parser_include.c:122
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr ""
|
||||
msgstr "შეცდომა: საქაღალდის %s ძებნის ბილიკში ჩამატების შეცდომა.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
#: ../parser_include.c:147 ../parser_include.c:151 ../parser_include.c:136
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr ""
|
||||
msgstr "შეცდომა: მეხსიერების გამოყოფა შეუძლებელია.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
#: ../parser_interface.c:52
|
||||
msgid "Bad write position\n"
|
||||
msgstr ""
|
||||
msgstr "არასწორი ჩაწერის მდებარეობა\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
#: ../parser_interface.c:55
|
||||
msgid "Permission denied\n"
|
||||
msgstr ""
|
||||
msgstr "წვდომა აკრძალულია\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
#: ../parser_interface.c:58
|
||||
msgid "Out of memory\n"
|
||||
msgstr ""
|
||||
msgstr "არასაკმარისი მეხსიერება\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
#: ../parser_interface.c:61
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილს კოპირება შეუძლებელია: არასწორი მეხსიერების მისამართი\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
#: ../parser_interface.c:64
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილი პროტოკოლს არ ემორჩილება\n"
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
#: ../parser_interface.c:67
|
||||
msgid "Profile does not match signature\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილი ხელმოწერას არ ემთხვევა\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
#: ../parser_interface.c:70
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილის ვერსია Apparmor-ის მოდულის მიერ მხარდაჭერილი არაა\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
#: ../parser_interface.c:73
|
||||
msgid "Profile already exists\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილი უკვე არსებობს\n"
|
||||
|
||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||
#: ../parser_interface.c:76
|
||||
msgid "Profile doesn't exist\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილი არ არსებობს\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
#: ../parser_interface.c:79
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
msgstr "წვდომა აკრძალულია. პროფილის ჩატვირთვის მცდელობა შეზღუდვისას?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#: ../parser_interface.c:82
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "უცნობი შეცდომა (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119 ../parser_interface.c:96
|
||||
#: ../parser_interface.c:100
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr ""
|
||||
msgstr "%s: \"%s\"-ის დამატების შეცდომა. "
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#: ../parser_interface.c:101 ../parser_interface.c:105
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr ""
|
||||
msgstr "%s: \"%s\"-ის ჩანაცვლების შეცდომა. "
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#: ../parser_interface.c:106 ../parser_interface.c:110
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr ""
|
||||
msgstr "%s: \"%s\"-ის წაშლის შეცდომა. "
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#: ../parser_interface.c:111 ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr ""
|
||||
msgstr "%s: stdout-ში ჩაწერის შეცდომა\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#: ../parser_interface.c:115 ../parser_interface.c:119
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: გამოტანის ფაილში ჩაწერის შეცდომა\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
#: ../parser_interface.c:118 ../parser_interface.c:142
|
||||
#: ../parser_interface.c:123 ../parser_interface.c:147
|
||||
#, c-format
|
||||
msgid "%s: ASSERT: Invalid option: %d\n"
|
||||
msgstr ""
|
||||
msgstr "%s: მტკიცება: არასწორი პარამეტრი: %d\n"
|
||||
|
||||
#: ../parser_interface.c:147 ../parser_interface.c:150
|
||||
#: ../parser_interface.c:127
|
||||
#: ../parser_interface.c:127 ../parser_interface.c:132
|
||||
#, c-format
|
||||
msgid "Addition succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"-სთვის დამატება წარმატებულია.\n"
|
||||
|
||||
#: ../parser_interface.c:151 ../parser_interface.c:154
|
||||
#: ../parser_interface.c:131
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:136
|
||||
#, c-format
|
||||
msgid "Replacement succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"-სთვის ჩანაცვლება წარმატებულია.\n"
|
||||
|
||||
#: ../parser_interface.c:155 ../parser_interface.c:158
|
||||
#: ../parser_interface.c:135
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:140
|
||||
#, c-format
|
||||
msgid "Removal succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"-სთვის წაშლა წარმატებულია.\n"
|
||||
|
||||
#: ../parser_interface.c:251 ../parser_interface.c:254
|
||||
#, c-format
|
||||
msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n"
|
||||
msgstr ""
|
||||
msgstr "პანიკა. არასწორი ზრდადი ბუფერი %p მდებ %p გაფართ %p ზომა %d რეს %p\n"
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
#: ../parser_interface.c:446 ../parser_interface.c:476
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილის %s ქსელის წესები არ მოქმედებს\n"
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "უცნობი ნიმუშის ტიპი\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
#: ../parser_interface.c:518 ../parser_interface.c:669
|
||||
#, c-format
|
||||
msgid "Unable to open %s - %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s-ის გახსნა შეუძლებელია - %s\n"
|
||||
|
||||
#: ../parser_interface.c:776 ../parser_interface.c:768
|
||||
#: ../parser_interface.c:543
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove ^%s\n"
|
||||
msgstr ""
|
||||
msgstr "მეხსიერების გამოყოფის შეცდომა: ^%s-ის წაშლა შეუძლებელია\n"
|
||||
|
||||
#: ../parser_interface.c:789 ../parser_interface.c:781
|
||||
#: ../parser_interface.c:556
|
||||
#, c-format
|
||||
msgid "Memory Allocation Error: Unable to remove %s:%s."
|
||||
msgstr ""
|
||||
msgstr "მეხსიერების გამოყოფის შეცდომა: %s-ის წაშლა შეუძლებელია: %s."
|
||||
|
||||
#: ../parser_interface.c:810 ../parser_interface.c:802
|
||||
msgid "unable to create work area\n"
|
||||
msgstr ""
|
||||
msgstr "სამუშაო ფართობის შექმნა შეუძლებელია\n"
|
||||
|
||||
#: ../parser_interface.c:818 ../parser_interface.c:810
|
||||
#, c-format
|
||||
msgid "unable to serialize profile %s\n"
|
||||
msgstr ""
|
||||
msgstr "პროფილის %s სერიალიზაცია შეუძლებელია\n"
|
||||
|
||||
#: ../parser_interface.c:829 ../parser_interface.c:916
|
||||
#: ../parser_interface.c:821 ../parser_interface.c:908
|
||||
#: ../parser_interface.c:582
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr ""
|
||||
msgstr "%s: სრული პროფილის ელემენტის ჩაწერა შეუძლებელია\n"
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#: ../parser_interface.c:593 ../parser_interface.c:579
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
msgstr "%s: სრული პროფილის ელემენტის კეშში ჩაწერა შეუძლებელია\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "'%s'-ის გახსნის შეცდომა"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 parser_lex.l:174
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "fstat-ის შეცდომა '%s'-სთვის"
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
msgstr "opendir -ის შეცდომა '%s'-სთვის"
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "%s-სთვის stat()-ის შეცდომა"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "'%s'-ის '%s'-ში გახსნის შეცდომა"
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
#, c-format
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
msgstr "ნაპოვნია მოულოდნელი სიმბოლო: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 parser_lex.l:474
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "ცვლადის სახელებს ბოლოში მიწერილი მძიმეების მხარდაჭერა არ გააჩნია"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
msgid "(network_mode) Found unexpected character: '%s'"
|
||||
msgstr ""
|
||||
msgstr "(network_mode) ნაპოვნია მოულოდნელი სიმბოლო: '%s'"
|
||||
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "გაფრთხილება %s-დან (%s%s ხაზი %d): %s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
msgid "%s: Could not allocate memory for subdomainbase mount point\n"
|
||||
msgstr ""
|
||||
"%s: მეხსიერების გამოყოფის შეცდომა subdomainbase მიმაგრების წერტილისთვის\n"
|
||||
|
||||
#: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479
|
||||
#: ../parser_main.c:1444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
"Use --subdomainfs to override.\n"
|
||||
msgstr ""
|
||||
"გაფრთხილება: %s-ში შესაბამისი FS ვერ ვიპოვე. მიმაგრებულია?\n"
|
||||
"გადასაფარად გამოიყენეთ --subdomainfs.\n"
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#: ../parser_main.c:822
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s: უკაცრავად, მაგრამ ამ პროგრამის გასაშვებად root-ის პრივილეგიები "
|
||||
"დაგჭირდებათ.\n"
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#: ../parser_main.c:828
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Warning! You've set this program setuid root.\n"
|
||||
"Anybody who can run this program can update your AppArmor profiles.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"%s: გაფრთხილება: პროგრამაზე setuid root დააყენეთ.\n"
|
||||
"ყველა, ვინც ამ პროგრამას გაუშვებს, AppArmor-ის პროფილების განახლება "
|
||||
"შეეძლება.\n"
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#: ../parser_main.c:946 ../parser_main.c:860 ../parser_main.c:1038
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "შეცდომა: პროფილის '%s' წაკითხვის შეცდომა: %s.\n"
|
||||
|
||||
#: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227
|
||||
#: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586
|
||||
@@ -288,26 +314,36 @@ msgstr ""
|
||||
#: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190
|
||||
#: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490
|
||||
#: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639
|
||||
#: ../network.c:314 ../af_unix.cc:203
|
||||
#: ../network.c:314 ../af_unix.cc:203 ../parser_misc.c:215 ../parser_misc.c:939
|
||||
#: parser_yacc.y:343 parser_yacc.y:367 parser_yacc.y:533 parser_yacc.y:543
|
||||
#: parser_yacc.y:660 parser_yacc.y:741 parser_yacc.y:750 parser_yacc.y:1171
|
||||
#: parser_yacc.y:1219 parser_yacc.y:1255 parser_yacc.y:1264 parser_yacc.y:1268
|
||||
#: parser_yacc.y:1278 parser_yacc.y:1288 parser_yacc.y:1382 parser_yacc.y:1460
|
||||
#: parser_yacc.y:1592 parser_yacc.y:1597 parser_yacc.y:1674 parser_yacc.y:1692
|
||||
#: parser_yacc.y:1699 parser_yacc.y:1748 ../network.c:315 ../af_unix.cc:194
|
||||
msgid "Memory allocation error."
|
||||
msgstr ""
|
||||
msgstr "მეხსიერების გამოყოფის შეცდომა."
|
||||
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#: ../parser_main.c:975
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "დაკეშილი ჩატვირთვა \"%s\"-სთვის წარმატებულია.\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#: ../parser_main.c:979
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "დაკეშილი თავიდან ჩატვირთვა \"%s\"-სთვის წარმატებულია.\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#: ../parser_main.c:1132
|
||||
#, c-format
|
||||
msgid "%s: Errors found in file. Aborting.\n"
|
||||
msgstr ""
|
||||
msgstr "%s: ფაილში აღმოჩენილია შეცდომები. მუშაობის დასრულება.\n"
|
||||
|
||||
#: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339
|
||||
#: ../parser_misc.c:532
|
||||
msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
@@ -315,14 +351,17 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
#: ../parser_misc.c:573 ../parser_misc.c:580
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr ""
|
||||
msgstr "წვდომები 'a' და 'w' ურთიერთგამომრიცხავია."
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
#: ../parser_misc.c:597
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415
|
||||
#: ../parser_misc.c:608
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
@@ -331,163 +370,176 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#: ../parser_misc.c:616 ../parser_misc.c:657
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
#: ../parser_misc.c:643 ../parser_misc.c:651
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#: ../parser_misc.c:699
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "შიდა: შეყვანაში აღმოჩენილია მოულოდნელი რეჟიმის სიმბოლო '%c'"
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#: ../parser_misc.c:721
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr ""
|
||||
msgstr "შიდა შეცდომის მიერ გენერირებული არასწორი წვდომა 0x%llx\n"
|
||||
|
||||
#: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626
|
||||
#: ../parser_variable.c:229
|
||||
#, c-format
|
||||
msgid "AppArmor parser error: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor-ის დამმუშავებლის შეცდომა: %s\n"
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
#: ../parser_merge.c:71
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr ""
|
||||
msgstr "ელემენტების შერწყმა შეუძლებელია. არასაკმარისი მეხსიერება\n"
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#: ../parser_merge.c:93
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "პროფილის მიმაგრება '/'-ით უნდა იწყებოდეს."
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 parser_yacc.y:407
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"პროფილის სახელი '/'-ით, სახელის სივრცით ან საკვანძო სიტყვებიდან 'profile' ან "
|
||||
"'hat' უნდა იწყებოდეს."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 parser_yacc.y:449
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr ""
|
||||
msgstr "შეცდომა ფსევდონიმის (%s) შექმნისას -> %s\n"
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 parser_yacc.y:581
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
"პროფილის ალამი chroot_relative კონფლიქტშია ალამთან namespace_relative"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 parser_yacc.y:585
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
msgstr "პროფილის ალამი mediate_deleted კონფლიქტშია ალამთან delegate_deleted"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 parser_yacc.y:588
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"პროფილის ალამი attach_disconnect კონფლიქტშია ალამთან no_attach_disconnected"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 parser_yacc.y:591
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
msgstr "პროფილის ალამი chroot_attach კონფლიქტშია ალამთან chroot_no_attach"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 parser_yacc.y:607
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr ""
|
||||
msgstr "პროფილის ალამი 'debug' აღარ გამოიყენება."
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 parser_yacc.y:629
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr ""
|
||||
msgstr "არასწორი პროფილის ალამი: %s."
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
#: parser_yacc.y:673
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
#: parser_yacc.y:598 parser_yacc.y:630 parser_yacc.y:677 parser_yacc.y:709
|
||||
msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 parser_yacc.y:681
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 parser_yacc.y:712
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
#: parser_yacc.y:739
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 parser_yacc.y:867
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 parser_yacc.y:905
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 parser_yacc.y:914
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 parser_yacc.y:1077
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 parser_yacc.y:1181
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 parser_yacc.y:1148
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 parser_yacc.y:1150
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 parser_yacc.y:1152
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 parser_yacc.y:1198
|
||||
#, c-format
|
||||
msgid "missing an end of line character? (entry: %s)"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
msgstr "არასწორი ქსელის ჩანაწერი."
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#: parser_yacc.y:1617
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr ""
|
||||
msgstr "არასწორი შესაძლებლობა %s."
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 parser_yacc.y:1637
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor-ის დამმუშავებლის შეცდომა. %s%s%s ხაზზე ნომრით %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor-ის დამმუშავებლის შეცდომა. %s%s ხაზზე ნომრით %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -495,17 +547,20 @@ msgid "%s: Illegal open {, nesting groupings not allowed\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278
|
||||
#: ../parser_regex.c:306
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Invalid number of items between {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284
|
||||
#: ../parser_regex.c:312
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close }, no matching open { detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361
|
||||
#: ../parser_regex.c:403
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
@@ -518,16 +573,19 @@ msgid "%s: Internal buffer overflow detected, %d characters exceeded\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377
|
||||
#: ../parser_regex.c:419
|
||||
#, c-format
|
||||
msgid "%s: Unable to parse input line '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#: ../parser_regex.c:487
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#: ../parser_policy.c:383
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -541,16 +599,19 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#: ../parser_policy.c:340
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#: ../parser_policy.c:370
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#: ../parser_policy.c:363
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr ""
|
||||
@@ -580,34 +641,35 @@ msgstr ""
|
||||
msgid "%s: Errors found in combining rules postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#: parser_lex.l:180 parser_lex.l:186 parser_lex.l:187
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "ჩასასმელი საქაღალდის ('%s') '%s'-ში დამუშავება შეუძლებელია"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "თვისების ბუფერი სავსეა."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
#: ../parser_main.c:1041 ../parser_main.c:1332 ../parser_main.c:1354
|
||||
#: ../parser_misc.c:280 ../parser_misc.c:299 ../parser_misc.c:308
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "არასაკმარისი მეხსიერება"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "კეშის საქაღალდის შექმნის შეცდომა: %s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "ფაილი კეშის საქაღალდის მდებარეობაზე: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "კეშის საქაღალდის განახლების შეცდომა: %s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
@@ -619,61 +681,61 @@ msgstr ""
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
#: parser_yacc.y:575 parser_yacc.y:621 parser_yacc.y:700
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "აკრძალვის პრეფიქსი დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
#: parser_yacc.y:612 parser_yacc.y:658 parser_yacc.y:737
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი მიმაგრების წესებში დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი dbus-ის წესებში დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი შესაძლებლობების წესებში დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613 parser_yacc.y:1722
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "არასწორი მიმაგრების პირობითი %s%s"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628 parser_yacc.y:1737
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "არასწორი მიმაგრების წესი"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635 parser_yacc.y:1744
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "მიმაგრების წერტილის პირობები ამჟამად მხარდაჭერილი არაა"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650 parser_yacc.y:1759
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "არასწორი pivotroot პირობითი '%s'"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236 ../parser_regex.c:264
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256 ../parser_regex.c:284
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339 ../parser_policy.c:347
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369 ../parser_policy.c:377
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -693,51 +755,51 @@ msgstr ""
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#: ../parser_misc.c:575 ../parser_misc.c:768
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#: ../parser_misc.c:599 ../parser_misc.c:792
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:703
|
||||
#: parser_yacc.y:703 parser_yacc.y:784
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი მიმაგრების წესებზე დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
#: parser_yacc.y:720 parser_yacc.y:801
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი dbus-ის წესებზე დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
#: parser_yacc.y:736 parser_yacc.y:817
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი სიგნალის წესებზე დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
#: parser_yacc.y:752 parser_yacc.y:833
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი ptrace-ის წესებზე დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
#: parser_yacc.y:768 parser_yacc.y:849 parser_yacc.y:869
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი unix-ის წესებზე დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
#: parser_yacc.y:794 parser_yacc.y:885
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "მფლობლის პრეფიქსი შესაძლებლობების წესებზე დაშვებული არაა"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#: parser_yacc.y:1293 parser_yacc.y:1377
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "dbus-ის წესი: არასწორი პირობითი ჯგუფი %s=0"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#: parser_yacc.y:1371 parser_yacc.y:1455
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "unix-ის წესი: არასწორი პირობითი ჯგუფი %s=0"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#: ../parser_regex.c:368 ../parser_regex.c:410
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
|
@@ -11,14 +11,14 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2016-03-03 08:40+0000\n"
|
||||
"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
|
||||
"PO-Revision-Date: 2020-07-13 00:17+0000\n"
|
||||
"Last-Translator: Peter J. Mello <admin@petermello.net>\n"
|
||||
"Language-Team: Portuguese <opensuse-pt@opensuse.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2020-07-14 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 4809fcb62f445aaa3ae919f7f6c3cc7d156ea57a)\n"
|
||||
"Language: pt\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
@@ -230,7 +230,7 @@ msgstr "Encontrado caracter inesperado: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "As declarações variáveis não aceitam vírgulas de seguimento"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
@@ -308,12 +308,12 @@ msgstr "Erro de alocação de memória."
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "A carga em cache foi bem sucedida para \"%s\".\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "A recarga em cache foi bem sucedida para \"%s\".\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#, c-format
|
||||
@@ -390,7 +390,7 @@ msgstr "Não é possível intercalar as entradas. Memória Esgotada\n"
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
msgstr "perfil %s: fundiu a regra %s com modificadores conflitantes x\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
@@ -400,6 +400,8 @@ msgstr "Anexo de perfil deve começar com '/'."
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"Os nomes dos perfis têm que começar com '/', espaço de nomes, ou palavra-"
|
||||
"chave 'profile' ou 'hat'."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#, c-format
|
||||
@@ -409,19 +411,21 @@ msgstr "Falha na criação da alcunha %s -> %s\n"
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
"A marcação do perfil chroot_relative conflitos com o namespace_relative"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
msgstr "A marcação do perfil mediate_deleted conflitos com delegate_deleted"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"A marcação do perfil attach_disconnected conflitos com no_attach_disconnected"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
msgstr "A marcação do perfil chroot_attach conflitos com chroot_no_attach"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
@@ -515,12 +519,12 @@ msgstr "Capacidade inválida %s."
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Erro de analisador AppArmor para %s%s%s na linha %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Erro de analisador AppArmor,%s%s linha %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -565,7 +569,7 @@ msgstr "%s: Não foi possível analisar a linha de entrada '%s'\n"
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nome de perfil inválido '%s' - má expressão regular\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#, c-format
|
||||
@@ -633,11 +637,11 @@ msgstr ""
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível processar incluir pasta '%s' em '%s'"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "Amortecedor de características cheio."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
@@ -652,7 +656,7 @@ msgstr "Não foi possível criar diretório de cache: %s\n"
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Ficheiro na localização da pasta do cache: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
@@ -662,132 +666,137 @@ msgstr "Não foi possível atualizar o diretório da cache: %s\n"
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interno: carácter do modo D-Bus '%c' inesperado na entrada"
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Erro interno gerado por permissão do D-Bus inválido 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "Não é permitido prefixo deny"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "Não é permitido prefixo owner"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "Não é permitido prefixo owner nas regras de montar"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "Não é permitido prefixo owner nas regras de D-Bus"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "Não é permitido prefixo owner nas regras de capacidade"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "montar condicional inválido %s%s"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "regra de montagem errada"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "condições do ponto de montagem não suportadas atualmente"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "pivotroot condicional inválido '%s'"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
"%s: Erro de agrupamento de expressões regulares: Fechamento inválido ], sem "
|
||||
"abertura correspondente [ detectado\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
"%s: Erro de agrupamento de expressões regulares: Excedido o máximo de "
|
||||
"aninhamento de {}\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"O ERRO processando regras de policydb para perfil %s, falhou em carregar\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "O ERRO substituindo aliases para perfil %s, falhou em carregar\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Não foi possível gravar %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "Erro: Não pôde ler o perfil binário ou o ficheiro de cache %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "Erro: Não foi possível ler o ficheiro de cache '%s', a ignorar...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interno: caractere inesperado do modo %s: '%c' na entrada"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Erro interno gerado permissão %s inválido 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido nas regras de montar"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido nas regras de D-Bus"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido nas regras do sinal"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido nas regras de ptrace"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido nas regras de unix"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido nas regras de capacidade"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regra dbus: grupo condicional inválido %s=()"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regra unix: grupo condicional inválido %s=()"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Erro de expressão regular: carácter de fuga '\\' seguinte\n"
|
||||
|
@@ -6,131 +6,143 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 03:51+0000\n"
|
||||
"Last-Translator: Novell Language <Unknown>\n"
|
||||
"PO-Revision-Date: 2022-06-17 21:43+0000\n"
|
||||
"Last-Translator: Isabella Rocha de Oliveira <Unknown>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2022-06-18 04:31+0000\n"
|
||||
"X-Generator: Launchpad (build ae54683eb2eb8ed62cda30dc44e60c5387c78159)\n"
|
||||
"Language: pt_BR\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
#: ../parser_include.c:113 ../parser_include.c:111 ../parser_include.c:96
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr "Erro: Sem memória.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#: ../parser_include.c:123 ../parser_include.c:121 ../parser_include.c:106
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr "Erro: O diretório base %s não é um diretório; ignorando.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#: ../parser_include.c:137 ../parser_include.c:122
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr ""
|
||||
"Erro: Não foi possível adicionar o diretório %s ao caminho de pesquisa.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
#: ../parser_include.c:147 ../parser_include.c:151 ../parser_include.c:136
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr "Erro: Não foi possível alocar memória.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
#: ../parser_interface.c:52
|
||||
msgid "Bad write position\n"
|
||||
msgstr "Posição de gravação incorreta\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
#: ../parser_interface.c:55
|
||||
msgid "Permission denied\n"
|
||||
msgstr "Permissão negada\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
#: ../parser_interface.c:58
|
||||
msgid "Out of memory\n"
|
||||
msgstr "Memória insuficiente\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
#: ../parser_interface.c:61
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível copiar perfil: Endereço de memória incorreto\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
#: ../parser_interface.c:64
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr "Perfil não compatível com o protocolo\n"
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
#: ../parser_interface.c:67
|
||||
msgid "Profile does not match signature\n"
|
||||
msgstr "Perfil não corresponde à assinatura\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
#: ../parser_interface.c:70
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr "Versão de perfil não suportada pelo módulo do AppArmor\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
#: ../parser_interface.c:73
|
||||
msgid "Profile already exists\n"
|
||||
msgstr "O perfil já existe\n"
|
||||
|
||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||
#: ../parser_interface.c:76
|
||||
msgid "Profile doesn't exist\n"
|
||||
msgstr "O perfil não existe\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
#: ../parser_interface.c:79
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
msgstr "Permissão negada; tentou carregar um perfil enquanto restrito?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#: ../parser_interface.c:82
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "Erro desconhecido (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119 ../parser_interface.c:96
|
||||
#: ../parser_interface.c:100
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr "%s: Impossível adicionar \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#: ../parser_interface.c:101 ../parser_interface.c:105
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr "%s: Impossível substituir \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#: ../parser_interface.c:106 ../parser_interface.c:110
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr "%s: Impossível remover \"%s\". "
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#: ../parser_interface.c:111 ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr "%s: Impossível gravar em stdout\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#: ../parser_interface.c:115 ../parser_interface.c:119
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Não é possível salvar no arquivo de saída\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
#: ../parser_interface.c:118 ../parser_interface.c:142
|
||||
#: ../parser_interface.c:123 ../parser_interface.c:147
|
||||
#, c-format
|
||||
msgid "%s: ASSERT: Invalid option: %d\n"
|
||||
msgstr "%s: DECLARAR: Opção inválida: %d\n"
|
||||
|
||||
#: ../parser_interface.c:147 ../parser_interface.c:150
|
||||
#: ../parser_interface.c:127
|
||||
#: ../parser_interface.c:127 ../parser_interface.c:132
|
||||
#, c-format
|
||||
msgid "Addition succeeded for \"%s\".\n"
|
||||
msgstr "Adição bem-sucedida de \"%s\".\n"
|
||||
|
||||
#: ../parser_interface.c:151 ../parser_interface.c:154
|
||||
#: ../parser_interface.c:131
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:136
|
||||
#, c-format
|
||||
msgid "Replacement succeeded for \"%s\".\n"
|
||||
msgstr "Substituição bem-sucedida de \"%s\".\n"
|
||||
|
||||
#: ../parser_interface.c:155 ../parser_interface.c:158
|
||||
#: ../parser_interface.c:135
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:140
|
||||
#, c-format
|
||||
msgid "Removal succeeded for \"%s\".\n"
|
||||
msgstr "Remoção bem-sucedida de \"%s\".\n"
|
||||
@@ -142,14 +154,14 @@ msgstr ""
|
||||
"PÂNICO: buffer de incremento incorreto %p pos %p ext %p tamanho %d res %p\n"
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
#: ../parser_interface.c:446 ../parser_interface.c:476
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
msgstr "perfil %s regras de rede não impostas\n"
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "Tipo padrão desconhecido\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
@@ -187,35 +199,35 @@ msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr "%s: Impossível gravar toda a entrada do perfil\n"
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#: ../parser_interface.c:593 ../parser_interface.c:579
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Não é possível gravar o perfil de entrada completo no cache\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível abrir '%s'"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 parser_lex.l:174
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "fstat falhou para '%s'"
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
msgstr "opendir falhou '%s'"
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "stat falhou para '%s'"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível abrir '%s' em '%s'"
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
@@ -223,9 +235,9 @@ msgstr ""
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr "Caractere inesperado encontrado: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 parser_lex.l:474
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "Declarações de variável não aceitam vírgulas como último caractere"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
@@ -235,7 +247,7 @@ msgstr "(network_mode) Caractere inesperado encontrado: '%s'"
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "Aviso de %s (%s%sline %d): %s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
@@ -244,6 +256,7 @@ msgstr ""
|
||||
"%s: Impossível alocar memória para ponto de montagem de base de subdomínio\n"
|
||||
|
||||
#: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479
|
||||
#: ../parser_main.c:1444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
@@ -253,6 +266,7 @@ msgstr ""
|
||||
"Use --subdomainfs para anular.\n"
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#: ../parser_main.c:822
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
@@ -262,6 +276,7 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#: ../parser_main.c:828
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Warning! You've set this program setuid root.\n"
|
||||
@@ -274,7 +289,7 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#: ../parser_main.c:946 ../parser_main.c:860 ../parser_main.c:1038
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr "Erro: Não foi possível ler o perfil %s: %s.\n"
|
||||
@@ -296,26 +311,36 @@ msgstr "Erro: Não foi possível ler o perfil %s: %s.\n"
|
||||
#: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190
|
||||
#: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490
|
||||
#: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639
|
||||
#: ../network.c:314 ../af_unix.cc:203
|
||||
#: ../network.c:314 ../af_unix.cc:203 ../parser_misc.c:215 ../parser_misc.c:939
|
||||
#: parser_yacc.y:343 parser_yacc.y:367 parser_yacc.y:533 parser_yacc.y:543
|
||||
#: parser_yacc.y:660 parser_yacc.y:741 parser_yacc.y:750 parser_yacc.y:1171
|
||||
#: parser_yacc.y:1219 parser_yacc.y:1255 parser_yacc.y:1264 parser_yacc.y:1268
|
||||
#: parser_yacc.y:1278 parser_yacc.y:1288 parser_yacc.y:1382 parser_yacc.y:1460
|
||||
#: parser_yacc.y:1592 parser_yacc.y:1597 parser_yacc.y:1674 parser_yacc.y:1692
|
||||
#: parser_yacc.y:1699 parser_yacc.y:1748 ../network.c:315 ../af_unix.cc:194
|
||||
msgid "Memory allocation error."
|
||||
msgstr "Erro de alocação de memória."
|
||||
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#: ../parser_main.c:975
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Cache carregado com sucesso para \"%s\".\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#: ../parser_main.c:979
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "Cache recarregado com sucesso para \"%s\".\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#: ../parser_main.c:1132
|
||||
#, c-format
|
||||
msgid "%s: Errors found in file. Aborting.\n"
|
||||
msgstr "%s: Erros encontrados no arquivo. Interrompendo.\n"
|
||||
|
||||
#: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339
|
||||
#: ../parser_misc.c:532
|
||||
msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
@@ -326,16 +351,19 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
#: ../parser_misc.c:573 ../parser_misc.c:580
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr "As permissões 'a' e 'w' de conflito são mutuamente exclusivas."
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
#: ../parser_misc.c:597
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"Qualificador de execução 'i' inválido. Qualificador em conflito já "
|
||||
"especificado"
|
||||
|
||||
#: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415
|
||||
#: ../parser_misc.c:608
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
@@ -347,6 +375,7 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#: ../parser_misc.c:616 ../parser_misc.c:657
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
@@ -355,6 +384,7 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
#: ../parser_misc.c:643 ../parser_misc.c:651
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
@@ -363,11 +393,13 @@ msgstr ""
|
||||
"especificado"
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#: ../parser_misc.c:699
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr "Interno: caractere '%c' inesperado de modo na entrada"
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#: ../parser_misc.c:721
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr "Erro interno gerou permissão inválida 0x%llx\n"
|
||||
@@ -379,60 +411,70 @@ msgid "AppArmor parser error: %s\n"
|
||||
msgstr "Erro do analisador do AppArmor: %s\n"
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
#: ../parser_merge.c:71
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr "Impossível mesclar entradas. Memória Insuficiente\n"
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#: ../parser_merge.c:93
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
msgstr "perfil % s: mesclou regra %s com conflitantes x modificadores\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "O anexo do perfil deve começar com um '/'."
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 parser_yacc.y:407
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
"Nomes de perfil devem começar com um '/', namespace ou palavra-chave "
|
||||
"'perfil' ou 'chapéu'."
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 parser_yacc.y:449
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr "Falha ao criar o álias %s -> %s\n"
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 parser_yacc.y:581
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
"Sinalizador de perfil chroot_relative está em conflito com namespace_relative"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 parser_yacc.y:585
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
"Sinalizador de perfil mediate_deleted está em conflito com delegate_deleted"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 parser_yacc.y:588
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
"Sinalizador de perfil attach_disconnected está em conflito com "
|
||||
"no_attach_disconnected"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 parser_yacc.y:591
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
"Sinalizador de perfil chroot_attach está em conflito com chroot_no_attach"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 parser_yacc.y:607
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr "O flag de perfil 'debug' não é mais válido."
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 parser_yacc.y:629
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr "Flag de perfil inválido: %s."
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
#: parser_yacc.y:673
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr "Declarar: `rule' retornou NULL."
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
#: parser_yacc.y:598 parser_yacc.y:630 parser_yacc.y:677 parser_yacc.y:709
|
||||
msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
@@ -440,82 +482,84 @@ msgstr ""
|
||||
"Modo inválido. Nas regras de negação, o 'x' não deve ser precedido pelo "
|
||||
"qualificador de execução 'i', 'p' ou 'u'"
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 parser_yacc.y:681
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
"Modo inválido. O 'x' deve ser precedido pelo qualificador de execução 'i', "
|
||||
"'p','c' ou 'u'"
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 parser_yacc.y:712
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
"Modo inválido; 'x' deve ser precedido pelo qualificador de execução 'i', 'p' "
|
||||
"ou 'u'"
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
#: parser_yacc.y:739
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr "Declarar: `network_rule' retornou um protocolo inválido."
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 parser_yacc.y:867
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr "Declarar: `change_profile' retornou NULL."
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 parser_yacc.y:905
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr "Declarar: 'hat rule' retornou NULL."
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 parser_yacc.y:914
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr "Declaração: a regra 'local_profile' retornou NULO."
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 parser_yacc.y:1077
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr "Cancelar a definição da variável booleana %s usada na expressão if"
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 parser_yacc.y:1181
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr "permissões de execução não seguras com regra ausente"
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 parser_yacc.y:1148
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr "subconjunto somente deve ser usado com regras de link."
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 parser_yacc.y:1150
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
"conflito de permissões de link e execução em uma regra de arquivo usando ->"
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 parser_yacc.y:1152
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
"permissões de link não são permitidas em uma transição de perfil nomeada.\n"
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 parser_yacc.y:1198
|
||||
#, c-format
|
||||
msgid "missing an end of line character? (entry: %s)"
|
||||
msgstr "caractere de fim de linha ausente? (entrada: %s)"
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244
|
||||
msgid "Invalid network entry."
|
||||
msgstr "Entrada de rede inválida."
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#: parser_yacc.y:1617
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr "Recurso inválido %s."
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 parser_yacc.y:1637
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Erro do analisador AppArmor para %s%s%s na linha %d: %s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Erro do analisador AppArmor,%s%s linha %d: %s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -523,6 +567,7 @@ msgid "%s: Illegal open {, nesting groupings not allowed\n"
|
||||
msgstr "%s: Abertura ilegal {, agrupamentos aninhados não permitidos\n"
|
||||
|
||||
#: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278
|
||||
#: ../parser_regex.c:306
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Invalid number of items between {}\n"
|
||||
msgstr ""
|
||||
@@ -530,6 +575,7 @@ msgstr ""
|
||||
"{}\n"
|
||||
|
||||
#: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284
|
||||
#: ../parser_regex.c:312
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close }, no matching open { detected\n"
|
||||
@@ -538,6 +584,7 @@ msgstr ""
|
||||
"abertura correspondente { detectada\n"
|
||||
|
||||
#: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361
|
||||
#: ../parser_regex.c:403
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
@@ -552,16 +599,19 @@ msgid "%s: Internal buffer overflow detected, %d characters exceeded\n"
|
||||
msgstr "%s: Overflow de buffer interno detectado; %d caracteres excedidos\n"
|
||||
|
||||
#: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377
|
||||
#: ../parser_regex.c:419
|
||||
#, c-format
|
||||
msgid "%s: Unable to parse input line '%s'\n"
|
||||
msgstr "%s: Impossível analisar linha de entrada '%s'\n"
|
||||
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#: ../parser_regex.c:487
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Nome do perfil inválido '%s' - expressão regular inválida\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#: ../parser_policy.c:383
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr "ERRO ao fundir regras para o perfil %s; falha ao carregar\n"
|
||||
@@ -579,6 +629,7 @@ msgstr ""
|
||||
"\t'**' somente podem ser usados no final de uma regra.\n"
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#: ../parser_policy.c:340
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -586,11 +637,13 @@ msgstr ""
|
||||
"carregar\n"
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#: ../parser_policy.c:370
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr "ERRO ao expandir variáveis para o perfil %s; falha ao carregar\n"
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#: ../parser_policy.c:363
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr "ERRO ao adicionar a regra de acesso hat para o perfil %s\n"
|
||||
@@ -624,164 +677,170 @@ msgstr ""
|
||||
"%s: Erros encontrados no pós-processamento de regras de combinação. "
|
||||
"Interrompendo.\n"
|
||||
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#: parser_lex.l:180 parser_lex.l:186 parser_lex.l:187
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível processar a inclusão do diretório '%s' em '%s'"
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "Recurso buffer está lotado."
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
#: ../parser_main.c:1041 ../parser_main.c:1332 ../parser_main.c:1354
|
||||
#: ../parser_misc.c:280 ../parser_misc.c:299 ../parser_misc.c:308
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Memória insuficiente"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Não é possível criar o diretório de cache: %s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Arquivo no local do diretório de cache: %s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Não é possível atualizar o diretório de cache: %s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interno: caractere mode DBus '%c' inesperado na entrada"
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Erro interno gerou DBus perm 0x%x inválido\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
#: parser_yacc.y:575 parser_yacc.y:621 parser_yacc.y:700
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "Prefixo deny não é permitido"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
#: parser_yacc.y:612 parser_yacc.y:658 parser_yacc.y:737
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "Prefixo owner não é permitido"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "Prefixo owner não é permitido em regras de montagem"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "Prefixo owner não é permitido em regras de dbus"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "Prefixo owner não é permitido em regras de capacidade"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613 parser_yacc.y:1722
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "montagem condicional inválida %s%s"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628 parser_yacc.y:1737
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "regra de montagem inválida"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635 parser_yacc.y:1744
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "condições do ponto de montagem não são suportadas atualmente"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650 parser_yacc.y:1759
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "pivotroot condicional inválido '%s'"
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236 ../parser_regex.c:264
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
"%s: Erro de agrupamento de regex: Fechamento inválido ], nenhuma abertura "
|
||||
"compatível ] foi detectada\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256 ../parser_regex.c:284
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
"%s: Erro de agrupamento de regex: Excedeu o aninhamento máximo de {}\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339 ../parser_policy.c:347
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"ERRO processando regras do policydb para o perfil %s, falha ao carregar\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369 ../parser_policy.c:377
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "Erro substituindo pseudônimos para o perfil %s, falha ao carregar\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Não foi possível escrever %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
"Erro: Não foi possível ler o perfil binário ou arquivo cache %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "Erro: Não foi possível ler o arquivo cache '%s', pulando...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#: ../parser_misc.c:575 ../parser_misc.c:768
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "Interno: modo %s caractere '%c' inesperado na entrada"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#: ../parser_misc.c:599 ../parser_misc.c:792
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Erro interno gerou %s perm 0x%x inválido\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
#: parser_yacc.y:703 parser_yacc.y:784
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido em regras de montagem"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
#: parser_yacc.y:720 parser_yacc.y:801
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido em regras dbus"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
#: parser_yacc.y:736 parser_yacc.y:817
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido em regras de sinal"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
#: parser_yacc.y:752 parser_yacc.y:833
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido em regras ptrace"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
#: parser_yacc.y:768 parser_yacc.y:849 parser_yacc.y:869
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido em regras unix"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
#: parser_yacc.y:794 parser_yacc.y:885
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "prefixo owner não permitido em regras de capacidade"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#: parser_yacc.y:1293 parser_yacc.y:1377
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regra dbus: grupo condicional inválido %s=()"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#: parser_yacc.y:1371 parser_yacc.y:1455
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "regra unix: grupo condicional inválido %s=()"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#: ../parser_regex.c:368 ../parser_regex.c:410
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Erro regex: caractere de escape à direita '\\'\n"
|
||||
|
490
parser/po/ro.po
490
parser/po/ro.po
File diff suppressed because it is too large
Load Diff
191
parser/po/tr.po
191
parser/po/tr.po
@@ -11,130 +11,142 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 03:41+0000\n"
|
||||
"Last-Translator: Ömer Kehri <Unknown>\n"
|
||||
"PO-Revision-Date: 2022-04-25 20:47+0000\n"
|
||||
"Last-Translator: Sabri Ünal <Unknown>\n"
|
||||
"Language-Team: turkish <i18n@suse.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2022-04-26 06:26+0000\n"
|
||||
"X-Generator: Launchpad (build 1445a2883c2be41f8e3d484e7c1c2b98b0a1caf9)\n"
|
||||
"Language: tr\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
#: ../parser_include.c:113 ../parser_include.c:111 ../parser_include.c:96
|
||||
msgid "Error: Out of memory.\n"
|
||||
msgstr "Hata: Yetersiz bellek.\n"
|
||||
|
||||
#: ../parser_include.c:123 ../parser_include.c:121
|
||||
#: ../parser_include.c:123 ../parser_include.c:121 ../parser_include.c:106
|
||||
#, c-format
|
||||
msgid "Error: basedir %s is not a directory, skipping.\n"
|
||||
msgstr "Hata: %s temel dizini bir dizin değil, atlanıyor.\n"
|
||||
|
||||
#: ../parser_include.c:137
|
||||
#: ../parser_include.c:137 ../parser_include.c:122
|
||||
#, c-format
|
||||
msgid "Error: Could not add directory %s to search path.\n"
|
||||
msgstr "Hata: %s dizini arama yollarına eklenemedi.\n"
|
||||
|
||||
#: ../parser_include.c:147 ../parser_include.c:151
|
||||
#: ../parser_include.c:147 ../parser_include.c:151 ../parser_include.c:136
|
||||
msgid "Error: Could not allocate memory.\n"
|
||||
msgstr "Hata: Bellek tahsis edilemedi.\n"
|
||||
|
||||
#: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49
|
||||
#: ../parser_interface.c:52
|
||||
msgid "Bad write position\n"
|
||||
msgstr "Hatalı yazma pozisyonu\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
#: ../parser_interface.c:55
|
||||
msgid "Permission denied\n"
|
||||
msgstr "İzin verilmedi\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
#: ../parser_interface.c:58
|
||||
msgid "Out of memory\n"
|
||||
msgstr "Yetersiz bellek\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
#: ../parser_interface.c:61
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
#: ../parser_interface.c:64
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
msgstr "Profil protokole uymuyor\n"
|
||||
|
||||
#: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64
|
||||
#: ../parser_interface.c:67
|
||||
msgid "Profile does not match signature\n"
|
||||
msgstr "Profil imzası tutmuyor\n"
|
||||
|
||||
#: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67
|
||||
#: ../parser_interface.c:70
|
||||
msgid "Profile version not supported by Apparmor module\n"
|
||||
msgstr "Profil sürümü Apparmor modülü tarafından desteklenmiyor\n"
|
||||
|
||||
#: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70
|
||||
#: ../parser_interface.c:73
|
||||
msgid "Profile already exists\n"
|
||||
msgstr "Profil zaten mevcut\n"
|
||||
|
||||
#: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73
|
||||
#: ../parser_interface.c:76
|
||||
msgid "Profile doesn't exist\n"
|
||||
msgstr "Profil mevcut değil\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
#: ../parser_interface.c:79
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#: ../parser_interface.c:82
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "Bilinmeyen hata (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119 ../parser_interface.c:96
|
||||
#: ../parser_interface.c:100
|
||||
#, c-format
|
||||
msgid "%s: Unable to add \"%s\". "
|
||||
msgstr "%s: \"%s\" eklenemedi. "
|
||||
|
||||
#: ../parser_interface.c:121 ../parser_interface.c:124
|
||||
#: ../parser_interface.c:101
|
||||
#: ../parser_interface.c:101 ../parser_interface.c:105
|
||||
#, c-format
|
||||
msgid "%s: Unable to replace \"%s\". "
|
||||
msgstr "%s: \"%s\" değiştirilemedi. "
|
||||
|
||||
#: ../parser_interface.c:126 ../parser_interface.c:129
|
||||
#: ../parser_interface.c:106
|
||||
#: ../parser_interface.c:106 ../parser_interface.c:110
|
||||
#, c-format
|
||||
msgid "%s: Unable to remove \"%s\". "
|
||||
msgstr "%s: \"%s\" silinemedi. "
|
||||
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:134
|
||||
#: ../parser_interface.c:111
|
||||
#: ../parser_interface.c:111 ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr "%s: stdout'a yazılamadı.\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#: ../parser_interface.c:115 ../parser_interface.c:119
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: çıkış dosyasına yazılamıyor\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
#: ../parser_interface.c:118 ../parser_interface.c:142
|
||||
#: ../parser_interface.c:123 ../parser_interface.c:147
|
||||
#, c-format
|
||||
msgid "%s: ASSERT: Invalid option: %d\n"
|
||||
msgstr "%s: ASSERT: Geçersiz seçenek: %d\n"
|
||||
|
||||
#: ../parser_interface.c:147 ../parser_interface.c:150
|
||||
#: ../parser_interface.c:127
|
||||
#: ../parser_interface.c:127 ../parser_interface.c:132
|
||||
#, c-format
|
||||
msgid "Addition succeeded for \"%s\".\n"
|
||||
msgstr "\"%s\" için ekleme başarılı oldu.\n"
|
||||
|
||||
#: ../parser_interface.c:151 ../parser_interface.c:154
|
||||
#: ../parser_interface.c:131
|
||||
#: ../parser_interface.c:131 ../parser_interface.c:136
|
||||
#, c-format
|
||||
msgid "Replacement succeeded for \"%s\".\n"
|
||||
msgstr "\"%s\" için değiştirme başarılı oldu.\n"
|
||||
|
||||
#: ../parser_interface.c:155 ../parser_interface.c:158
|
||||
#: ../parser_interface.c:135
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:140
|
||||
#, c-format
|
||||
msgid "Removal succeeded for \"%s\".\n"
|
||||
msgstr "\"%s\" için silme başarılı oldu.\n"
|
||||
@@ -146,7 +158,7 @@ msgstr ""
|
||||
"PANİK hatalı arttırma arabelleği %p pozisyon %p ext %p boyut %d res %p\n"
|
||||
|
||||
#: ../parser_interface.c:656 ../parser_interface.c:658
|
||||
#: ../parser_interface.c:446
|
||||
#: ../parser_interface.c:446 ../parser_interface.c:476
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
@@ -191,7 +203,7 @@ msgid "%s: Unable to write entire profile entry\n"
|
||||
msgstr "%s: Profil girdisinin tamamı yazılamadı\n"
|
||||
|
||||
#: ../parser_interface.c:839 ../parser_interface.c:831
|
||||
#: ../parser_interface.c:593
|
||||
#: ../parser_interface.c:593 ../parser_interface.c:579
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
@@ -199,9 +211,9 @@ msgstr ""
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "'%s' açılamadı"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 parser_lex.l:174
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
@@ -227,7 +239,7 @@ msgstr ""
|
||||
msgid "Found unexpected character: '%s'"
|
||||
msgstr "Beklenmeyen karakter bulundu: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 parser_lex.l:474
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
|
||||
@@ -247,6 +259,7 @@ msgid "%s: Could not allocate memory for subdomainbase mount point\n"
|
||||
msgstr "%s: subdomainbase bağlantı noktası için bellek ayrılamadı\n"
|
||||
|
||||
#: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479
|
||||
#: ../parser_main.c:1444
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Warning: unable to find a suitable fs in %s, is it mounted?\n"
|
||||
@@ -254,6 +267,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498
|
||||
#: ../parser_main.c:822
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Sorry. You need root privileges to run this program.\n"
|
||||
@@ -263,6 +277,7 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505
|
||||
#: ../parser_main.c:828
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Warning! You've set this program setuid root.\n"
|
||||
@@ -274,7 +289,7 @@ msgstr ""
|
||||
"\n"
|
||||
|
||||
#: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836
|
||||
#: ../parser_main.c:946 ../parser_main.c:860
|
||||
#: ../parser_main.c:946 ../parser_main.c:860 ../parser_main.c:1038
|
||||
#, c-format
|
||||
msgid "Error: Could not read profile %s: %s.\n"
|
||||
msgstr "Hata: %s profili okunamadı: %s.\n"
|
||||
@@ -296,26 +311,36 @@ msgstr "Hata: %s profili okunamadı: %s.\n"
|
||||
#: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190
|
||||
#: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490
|
||||
#: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639
|
||||
#: ../network.c:314 ../af_unix.cc:203
|
||||
#: ../network.c:314 ../af_unix.cc:203 ../parser_misc.c:215 ../parser_misc.c:939
|
||||
#: parser_yacc.y:343 parser_yacc.y:367 parser_yacc.y:533 parser_yacc.y:543
|
||||
#: parser_yacc.y:660 parser_yacc.y:741 parser_yacc.y:750 parser_yacc.y:1171
|
||||
#: parser_yacc.y:1219 parser_yacc.y:1255 parser_yacc.y:1264 parser_yacc.y:1268
|
||||
#: parser_yacc.y:1278 parser_yacc.y:1288 parser_yacc.y:1382 parser_yacc.y:1460
|
||||
#: parser_yacc.y:1592 parser_yacc.y:1597 parser_yacc.y:1674 parser_yacc.y:1692
|
||||
#: parser_yacc.y:1699 parser_yacc.y:1748 ../network.c:315 ../af_unix.cc:194
|
||||
msgid "Memory allocation error."
|
||||
msgstr "Bellek ayırma hatası."
|
||||
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#: ../parser_main.c:975
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#: ../parser_main.c:979
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#: ../parser_main.c:1132
|
||||
#, c-format
|
||||
msgid "%s: Errors found in file. Aborting.\n"
|
||||
msgstr "%s: Dosyada hatalar bulundu. Durduruluyor.\n"
|
||||
|
||||
#: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339
|
||||
#: ../parser_misc.c:532
|
||||
msgid ""
|
||||
"Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n"
|
||||
"See the apparmor.d(5) manpage for details.\n"
|
||||
@@ -326,15 +351,18 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638
|
||||
#: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387
|
||||
#: ../parser_misc.c:573 ../parser_misc.c:580
|
||||
msgid "Conflict 'a' and 'w' perms are mutually exclusive."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404
|
||||
#: ../parser_misc.c:597
|
||||
msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
"Çalıştırma niteleyicisi 'i' geçersiz, çakışan niteleyici zaten belirtilmiş"
|
||||
|
||||
#: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415
|
||||
#: ../parser_misc.c:608
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Unconfined exec qualifier (%c%c) allows some dangerous environment variables "
|
||||
@@ -343,6 +371,7 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681
|
||||
#: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464
|
||||
#: ../parser_misc.c:616 ../parser_misc.c:657
|
||||
#, c-format
|
||||
msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
@@ -350,17 +379,20 @@ msgstr ""
|
||||
|
||||
#: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708
|
||||
#: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458
|
||||
#: ../parser_misc.c:643 ../parser_misc.c:651
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Exec qualifier '%c%c' invalid, conflicting qualifier already specified"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506
|
||||
#: ../parser_misc.c:699
|
||||
#, c-format
|
||||
msgid "Internal: unexpected mode character '%c' in input"
|
||||
msgstr "Dahili: girdide beklenmeyen mod karakteri '%c'"
|
||||
|
||||
#: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528
|
||||
#: ../parser_misc.c:721
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid perm 0x%llx\n"
|
||||
msgstr ""
|
||||
@@ -372,10 +404,12 @@ msgid "AppArmor parser error: %s\n"
|
||||
msgstr "AppArmor inceleyici hatası: %s\n"
|
||||
|
||||
#: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83
|
||||
#: ../parser_merge.c:71
|
||||
msgid "Couldn't merge entries. Out of Memory\n"
|
||||
msgstr "Girdiler birleştirilemiyor. Yetersiz bellek\n"
|
||||
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#: ../parser_merge.c:93
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
@@ -384,117 +418,120 @@ msgstr ""
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 parser_yacc.y:407
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 parser_yacc.y:449
|
||||
#, c-format
|
||||
msgid "Failed to create alias %s -> %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 parser_yacc.y:581
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 parser_yacc.y:585
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 parser_yacc.y:588
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 parser_yacc.y:591
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 parser_yacc.y:607
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552
|
||||
#: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 parser_yacc.y:629
|
||||
#, c-format
|
||||
msgid "Invalid profile flag: %s."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
#: parser_yacc.y:673
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr "Assert: `rule' NULL döndürdü."
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
#: parser_yacc.y:598 parser_yacc.y:630 parser_yacc.y:677 parser_yacc.y:709
|
||||
msgid ""
|
||||
"Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', "
|
||||
"'p', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602
|
||||
#: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 parser_yacc.y:681
|
||||
msgid ""
|
||||
"Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633
|
||||
#: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 parser_yacc.y:712
|
||||
msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'"
|
||||
msgstr ""
|
||||
"Geçersiz mod; 'x', çalıştırma değişkenleri 'i', 'p' ya da 'u'dan sonra "
|
||||
"gelmelidir."
|
||||
|
||||
#: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660
|
||||
#: parser_yacc.y:739
|
||||
msgid "Assert: `network_rule' return invalid protocol."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 parser_yacc.y:867
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 parser_yacc.y:905
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr "Assert: `hat rule' NULL döndürdü."
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 parser_yacc.y:914
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 parser_yacc.y:1077
|
||||
#, c-format
|
||||
msgid "Unset boolean variable %s used in if-expression"
|
||||
msgstr "If deyimi içinde ayarlanmamış boolean değişkeni %s"
|
||||
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092
|
||||
#: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 parser_yacc.y:1181
|
||||
msgid "unsafe rule missing exec permissions"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060
|
||||
#: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 parser_yacc.y:1148
|
||||
msgid "subset can only be used with link rules."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062
|
||||
#: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 parser_yacc.y:1150
|
||||
msgid "link and exec perms conflict on a file rule using ->"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064
|
||||
#: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 parser_yacc.y:1152
|
||||
msgid "link perms are not allowed on a named profile transition.\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109
|
||||
#: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 parser_yacc.y:1198
|
||||
#, c-format
|
||||
msgid "missing an end of line character? (entry: %s)"
|
||||
msgstr "eksik satır sonu karakteri? (girdi: %s)"
|
||||
|
||||
#: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155
|
||||
#: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244
|
||||
msgid "Invalid network entry."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510
|
||||
#: parser_yacc.y:1617
|
||||
#, c-format
|
||||
msgid "Invalid capability %s."
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 parser_yacc.y:1637
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
@@ -510,11 +547,13 @@ msgid "%s: Illegal open {, nesting groupings not allowed\n"
|
||||
msgstr "%s: Kural dışı açık {, iç içe konan gruplamalara izin verilmez\n"
|
||||
|
||||
#: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278
|
||||
#: ../parser_regex.c:306
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Invalid number of items between {}\n"
|
||||
msgstr "%s: Regex gruplama hatası: {} içinde geçersiz öğe sayısı\n"
|
||||
|
||||
#: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284
|
||||
#: ../parser_regex.c:312
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close }, no matching open { detected\n"
|
||||
@@ -523,6 +562,7 @@ msgstr ""
|
||||
"bulunamadı\n"
|
||||
|
||||
#: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361
|
||||
#: ../parser_regex.c:403
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Unclosed grouping or character class, expecting "
|
||||
@@ -537,16 +577,19 @@ msgid "%s: Internal buffer overflow detected, %d characters exceeded\n"
|
||||
msgstr "%s: Dahili ara bellek taşması saptandı, %d karakter aşıldı\n"
|
||||
|
||||
#: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377
|
||||
#: ../parser_regex.c:419
|
||||
#, c-format
|
||||
msgid "%s: Unable to parse input line '%s'\n"
|
||||
msgstr "%s: Giriş satırı '%s' incelenemedi\n"
|
||||
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#: ../parser_regex.c:487
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#: ../parser_policy.c:383
|
||||
#, c-format
|
||||
msgid "ERROR merging rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -565,17 +608,20 @@ msgstr ""
|
||||
"\t'**' sadece bir kuralın sonunda kullanılabilir.\n"
|
||||
|
||||
#: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332
|
||||
#: ../parser_policy.c:340
|
||||
#, c-format
|
||||
msgid "ERROR processing regexs for profile %s, failed to load\n"
|
||||
msgstr "HATA: %s profilinin regex'leri işlenemedi, yükleme başarısız oldu\n"
|
||||
|
||||
#: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362
|
||||
#: ../parser_policy.c:370
|
||||
#, c-format
|
||||
msgid "ERROR expanding variables for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
"HATA: %s profili için değişkenler genişletilemedi, yükleme başarısız oldu\n"
|
||||
|
||||
#: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355
|
||||
#: ../parser_policy.c:363
|
||||
#, c-format
|
||||
msgid "ERROR adding hat access rule for profile %s\n"
|
||||
msgstr ""
|
||||
@@ -606,7 +652,7 @@ msgid "%s: Errors found in combining rules postprocessing. Aborting.\n"
|
||||
msgstr ""
|
||||
"%s: Kural birleştirme sonrası işlemlerde hata bulundu. Durduruluyor.\n"
|
||||
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#: parser_lex.l:180 parser_lex.l:186 parser_lex.l:187
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
@@ -616,9 +662,10 @@ msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
#: ../parser_main.c:1041 ../parser_main.c:1332 ../parser_main.c:1354
|
||||
#: ../parser_misc.c:280 ../parser_misc.c:299 ../parser_misc.c:308
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Yetersiz bellek"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
@@ -645,11 +692,11 @@ msgstr ""
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
#: parser_yacc.y:575 parser_yacc.y:621 parser_yacc.y:700
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
#: parser_yacc.y:612 parser_yacc.y:658 parser_yacc.y:737
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
|
||||
@@ -665,41 +712,41 @@ msgstr ""
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613 parser_yacc.y:1722
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628 parser_yacc.y:1737
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635 parser_yacc.y:1744
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650 parser_yacc.y:1759
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236 ../parser_regex.c:264
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256 ../parser_regex.c:284
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339 ../parser_policy.c:347
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369 ../parser_policy.c:377
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
@@ -719,51 +766,51 @@ msgstr ""
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#: ../parser_misc.c:575 ../parser_misc.c:768
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#: ../parser_misc.c:599 ../parser_misc.c:792
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:703
|
||||
#: parser_yacc.y:703 parser_yacc.y:784
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:720
|
||||
#: parser_yacc.y:720 parser_yacc.y:801
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:736
|
||||
#: parser_yacc.y:736 parser_yacc.y:817
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:752
|
||||
#: parser_yacc.y:752 parser_yacc.y:833
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:768
|
||||
#: parser_yacc.y:768 parser_yacc.y:849 parser_yacc.y:869
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:794
|
||||
#: parser_yacc.y:794 parser_yacc.y:885
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#: parser_yacc.y:1293 parser_yacc.y:1377
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#: parser_yacc.y:1371 parser_yacc.y:1455
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#: ../parser_regex.c:368 ../parser_regex.c:410
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
|
@@ -13,14 +13,14 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 12:27+0000\n"
|
||||
"Last-Translator: yurchor <Unknown>\n"
|
||||
"PO-Revision-Date: 2020-05-19 21:52+0000\n"
|
||||
"Last-Translator: Nazarii Ritter <nazariy.ritter@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2020-05-20 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 0385b538081bc4718df6fb844a3afc89729c94ce)\n"
|
||||
"Language: uk\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
@@ -747,27 +747,29 @@ msgstr "ПОМИЛКА заміри псевдонімів для профілю
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: Неможливо записати %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
"Помилка: Не вдалося прочитати бінарний профіль або файл кешу %s: %s.\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "Помилка: Не вдалося прочитати файл кешу '%s', пропуск…\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
"Внутрішня помилка: неочікуваний режим %s символу «%c» у вхідних даних"
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "Внутрішня помилка, спричинена невірним дозволом %s 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
|
@@ -6,14 +6,14 @@ msgstr ""
|
||||
"Project-Id-Version: apparmor-parser\n"
|
||||
"Report-Msgid-Bugs-To: <apparmor@lists.ubuntu.com>\n"
|
||||
"POT-Creation-Date: 2014-09-13 00:11-0700\n"
|
||||
"PO-Revision-Date: 2013-11-15 04:12+0000\n"
|
||||
"Last-Translator: Novell Language <Unknown>\n"
|
||||
"PO-Revision-Date: 2022-01-15 11:52+0000\n"
|
||||
"Last-Translator: Yulin Yang <yylteam@icloud.com>\n"
|
||||
"Language-Team: Novell Language <language@novell.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 18928)\n"
|
||||
"X-Launchpad-Export-Date: 2022-01-16 04:32+0000\n"
|
||||
"X-Generator: Launchpad (build 0072e2709f85567cc6c8d33e98acde9fcc09f491)\n"
|
||||
"Language: zh_CN\n"
|
||||
|
||||
#: ../parser_include.c:113 ../parser_include.c:111
|
||||
@@ -40,7 +40,7 @@ msgstr "写入位置无效\n"
|
||||
|
||||
#: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52
|
||||
msgid "Permission denied\n"
|
||||
msgstr "拒绝许可权限\n"
|
||||
msgstr "权限不足\n"
|
||||
|
||||
#: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55
|
||||
msgid "Out of memory\n"
|
||||
@@ -48,7 +48,7 @@ msgstr "内存不足\n"
|
||||
|
||||
#: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58
|
||||
msgid "Couldn't copy profile: Bad memory address\n"
|
||||
msgstr ""
|
||||
msgstr "无法复制配置文件:内存地址不正确\n"
|
||||
|
||||
#: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61
|
||||
msgid "Profile doesn't conform to protocol\n"
|
||||
@@ -72,12 +72,12 @@ msgstr "配置文件不存在\n"
|
||||
|
||||
#: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76
|
||||
msgid "Permission denied; attempted to load a profile while confined?\n"
|
||||
msgstr ""
|
||||
msgstr "权限被拒绝;试图在受限时加载配置文件?\n"
|
||||
|
||||
#: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79
|
||||
#, c-format
|
||||
msgid "Unknown error (%d): %s\n"
|
||||
msgstr ""
|
||||
msgstr "未知错误 (%d): %s\n"
|
||||
|
||||
#: ../parser_interface.c:116 ../parser_interface.c:119
|
||||
#: ../parser_interface.c:96
|
||||
@@ -101,13 +101,13 @@ msgstr "%s: 无法去除\"%s\"。 "
|
||||
#: ../parser_interface.c:111
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to stdout\n"
|
||||
msgstr "%s: 无法写入 stdout\n"
|
||||
msgstr "%s: 无法写入到标准输出\n"
|
||||
|
||||
#: ../parser_interface.c:135 ../parser_interface.c:138
|
||||
#: ../parser_interface.c:115
|
||||
#, c-format
|
||||
msgid "%s: Unable to write to output file\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 无法写入输出文件\n"
|
||||
|
||||
#: ../parser_interface.c:138 ../parser_interface.c:162
|
||||
#: ../parser_interface.c:141 ../parser_interface.c:165
|
||||
@@ -143,11 +143,11 @@ msgstr "PANIC 无效的递增缓冲区:%p pos %p ext %p size %d res %p\n"
|
||||
#: ../parser_interface.c:446
|
||||
#, c-format
|
||||
msgid "profile %s network rules not enforced\n"
|
||||
msgstr ""
|
||||
msgstr "配置文件%s网络规则未强制执行\n"
|
||||
|
||||
#: ../parser_interface.c:666
|
||||
msgid "Unknown pattern type\n"
|
||||
msgstr ""
|
||||
msgstr "未知模式类型\n"
|
||||
|
||||
#: ../parser_interface.c:750 ../parser_interface.c:902
|
||||
#: ../parser_interface.c:743 ../parser_interface.c:894
|
||||
@@ -188,32 +188,32 @@ msgstr "%s: 无法写入整个配置文件项\n"
|
||||
#: ../parser_interface.c:593
|
||||
#, c-format
|
||||
msgid "%s: Unable to write entire profile entry to cache\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 无法将整个配置文件项写入缓存\n"
|
||||
|
||||
#: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169
|
||||
#, c-format
|
||||
msgid "Could not open '%s'"
|
||||
msgstr ""
|
||||
msgstr "无法打开“%s”"
|
||||
|
||||
#: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173
|
||||
#, c-format
|
||||
msgid "fstat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"的 fstat 失败"
|
||||
|
||||
#: parser_lex.l:121
|
||||
#, c-format
|
||||
msgid "opendir failed '%s'"
|
||||
msgstr ""
|
||||
msgstr "打开目录\"%s\"失败"
|
||||
|
||||
#: parser_lex.l:152
|
||||
#, c-format
|
||||
msgid "stat failed for '%s'"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"的 stat 失败"
|
||||
|
||||
#: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139
|
||||
#, c-format
|
||||
msgid "Could not open '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "无法在\"%2$s\"中打开\"%1$s\""
|
||||
|
||||
#: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399
|
||||
#: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638
|
||||
@@ -223,7 +223,7 @@ msgstr "发现意外字符: '%s'"
|
||||
|
||||
#: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428
|
||||
msgid "Variable declarations do not accept trailing commas"
|
||||
msgstr ""
|
||||
msgstr "变量声明不接受尾随逗号"
|
||||
|
||||
#: parser_lex.l:420
|
||||
#, c-format
|
||||
@@ -233,7 +233,7 @@ msgstr "(network_mode) 发现意外字符:“%s”"
|
||||
#: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106
|
||||
#, c-format
|
||||
msgid "Warning from %s (%s%sline %d): %s"
|
||||
msgstr ""
|
||||
msgstr "来自%s(%s%s行 %d)的警告:%s"
|
||||
|
||||
#: ../parser_main.c:531
|
||||
#, c-format
|
||||
@@ -299,12 +299,12 @@ msgstr "内存分配错误。"
|
||||
#: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757
|
||||
#, c-format
|
||||
msgid "Cached load succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"的缓存加载成功。\n"
|
||||
|
||||
#: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761
|
||||
#, c-format
|
||||
msgid "Cached reload succeeded for \"%s\".\n"
|
||||
msgstr ""
|
||||
msgstr "\"%s\"的缓存重加载成功。\n"
|
||||
|
||||
#: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967
|
||||
#, c-format
|
||||
@@ -372,16 +372,16 @@ msgstr "无法合并项。内存不足\n"
|
||||
#: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105
|
||||
#, c-format
|
||||
msgid "profile %s: has merged rule %s with conflicting x modifiers\n"
|
||||
msgstr ""
|
||||
msgstr "配置文件%s:已将规则%s与冲突的x修饰符合并\n"
|
||||
|
||||
#: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320
|
||||
msgid "Profile attachment must begin with a '/'."
|
||||
msgstr ""
|
||||
msgstr "配置文件附件必须以\"/\"开头。"
|
||||
|
||||
#: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348
|
||||
msgid ""
|
||||
"Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'."
|
||||
msgstr ""
|
||||
msgstr "配置文件名称必须以\"/\"、命名空间或关键字\"profile\"或\"hat\"开头。"
|
||||
|
||||
#: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384
|
||||
#, c-format
|
||||
@@ -390,20 +390,20 @@ msgstr "无法创建别名 %s -> %s\n"
|
||||
|
||||
#: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506
|
||||
msgid "Profile flag chroot_relative conflicts with namespace_relative"
|
||||
msgstr ""
|
||||
msgstr "配置文件标志 chroot_relative 与 namespace_relative 冲突"
|
||||
|
||||
#: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510
|
||||
msgid "Profile flag mediate_deleted conflicts with delegate_deleted"
|
||||
msgstr ""
|
||||
msgstr "配置文件标志 mediate_deleted 与 delegate_deleted 冲突"
|
||||
|
||||
#: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513
|
||||
msgid ""
|
||||
"Profile flag attach_disconnected conflicts with no_attach_disconnected"
|
||||
msgstr ""
|
||||
msgstr "配置文件标志 attach_disconnected 与 no_attach_disconnected 冲突"
|
||||
|
||||
#: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516
|
||||
msgid "Profile flag chroot_attach conflicts with chroot_no_attach"
|
||||
msgstr ""
|
||||
msgstr "配置文件标志 chroot_attach 与 chroot_no_attach 冲突"
|
||||
|
||||
#: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530
|
||||
msgid "Profile flag 'debug' is no longer valid."
|
||||
@@ -416,7 +416,7 @@ msgstr "无效的配置文件标志:%s。"
|
||||
|
||||
#: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594
|
||||
msgid "Assert: `rule' returned NULL."
|
||||
msgstr "声明:`rule'返回 NULL。"
|
||||
msgstr "声明:`rule'返回空值(NULL)。"
|
||||
|
||||
#: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584
|
||||
#: parser_yacc.y:598 parser_yacc.y:630
|
||||
@@ -440,15 +440,15 @@ msgstr "声明:“network_rule”返回无效协议。"
|
||||
|
||||
#: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786
|
||||
msgid "Assert: `change_profile' returned NULL."
|
||||
msgstr "声明:“change_profile”返回 NULL。"
|
||||
msgstr "声明:“change_profile”返回空值(NULL)。"
|
||||
|
||||
#: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810
|
||||
msgid "Assert: 'hat rule' returned NULL."
|
||||
msgstr "声明:'hat rule'返回 NULL。"
|
||||
msgstr "声明:'hat rule'返回空值(NULL)。"
|
||||
|
||||
#: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819
|
||||
msgid "Assert: 'local_profile rule' returned NULL."
|
||||
msgstr "声明:“local_profile rule”返回 NULL。"
|
||||
msgstr "声明:“local_profile rule”返回空值(NULL)。"
|
||||
|
||||
#: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992
|
||||
#, c-format
|
||||
@@ -489,12 +489,12 @@ msgstr "功能 %s 无效。"
|
||||
#: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525
|
||||
#, c-format
|
||||
msgid "AppArmor parser error for %s%s%s at line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "第 %4$d 行 %1$s%2$s%3$s 的AppArmor分析器错误:%5$s\n"
|
||||
|
||||
#: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531
|
||||
#, c-format
|
||||
msgid "AppArmor parser error,%s%s line %d: %s\n"
|
||||
msgstr ""
|
||||
msgstr "AppArmor分析器错误,在 %s%s 行 %d:%s\n"
|
||||
|
||||
#: ../parser_regex.c:244
|
||||
#, c-format
|
||||
@@ -532,7 +532,7 @@ msgstr "%s: 无法对输入行'%s'进行语法分析\n"
|
||||
#: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421
|
||||
#, c-format
|
||||
msgid "%s: Invalid profile name '%s' - bad regular expression\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 配置文件名称\"%s\"无效-错误的正则表达式\n"
|
||||
|
||||
#: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375
|
||||
#, c-format
|
||||
@@ -593,161 +593,161 @@ msgstr "%s: 在组合规则后处理中发现错误。正在中止。\n"
|
||||
#: parser_lex.l:180 parser_lex.l:186
|
||||
#, c-format
|
||||
msgid "Could not process include directory '%s' in '%s'"
|
||||
msgstr ""
|
||||
msgstr "无法处理\"%s\"中的包含目录\"%s\""
|
||||
|
||||
#: ../parser_main.c:660 ../parser_main.c:523
|
||||
msgid "Feature buffer full."
|
||||
msgstr ""
|
||||
msgstr "功能缓冲区已满。"
|
||||
|
||||
#: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024
|
||||
#: ../parser_main.c:1041
|
||||
msgid "Out of memory"
|
||||
msgstr ""
|
||||
msgstr "内存不足"
|
||||
|
||||
#: ../parser_main.c:1182 ../parser_main.c:1091
|
||||
#, c-format
|
||||
msgid "Can't create cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "无法创建目录:%s\n"
|
||||
|
||||
#: ../parser_main.c:1185 ../parser_main.c:1094
|
||||
#, c-format
|
||||
msgid "File in cache directory location: %s\n"
|
||||
msgstr ""
|
||||
msgstr "缓存目录位置中的文件:%s\n"
|
||||
|
||||
#: ../parser_main.c:1188 ../parser_main.c:1097
|
||||
#, c-format
|
||||
msgid "Can't update cache directory: %s\n"
|
||||
msgstr ""
|
||||
msgstr "无法更新缓存目录:%s\n"
|
||||
|
||||
#: ../parser_misc.c:833
|
||||
#, c-format
|
||||
msgid "Internal: unexpected DBus mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "内部:输入中意外的DBus模式字符\"%c\""
|
||||
|
||||
#: ../parser_misc.c:857
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid DBus perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "内部错误,生成了无效的DBus perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:575 parser_yacc.y:621
|
||||
msgid "deny prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "不允许使用拒绝前缀"
|
||||
|
||||
#: parser_yacc.y:612 parser_yacc.y:658
|
||||
msgid "owner prefix not allowed"
|
||||
msgstr ""
|
||||
msgstr "不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:660
|
||||
msgid "owner prefix not allow on mount rules"
|
||||
msgstr ""
|
||||
msgstr "装载规则中不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:677
|
||||
msgid "owner prefix not allow on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "dbus规则上不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:704
|
||||
msgid "owner prefix not allow on capability rules"
|
||||
msgstr ""
|
||||
msgstr "不允许在功能规则上使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:1357 parser_yacc.y:1613
|
||||
#, c-format
|
||||
msgid "invalid mount conditional %s%s"
|
||||
msgstr ""
|
||||
msgstr "无效的装载条件%s%s"
|
||||
|
||||
#: parser_yacc.y:1374 parser_yacc.y:1628
|
||||
msgid "bad mount rule"
|
||||
msgstr ""
|
||||
msgstr "错误的装载规则"
|
||||
|
||||
#: parser_yacc.y:1381 parser_yacc.y:1635
|
||||
msgid "mount point conditions not currently supported"
|
||||
msgstr ""
|
||||
msgstr "当前不支持装载点条件"
|
||||
|
||||
#: parser_yacc.y:1398 parser_yacc.y:1650
|
||||
#, c-format
|
||||
msgid "invalid pivotroot conditional '%s'"
|
||||
msgstr ""
|
||||
msgstr "无效的pivotroot条件\"%s\""
|
||||
|
||||
#: ../parser_regex.c:241 ../parser_regex.c:236
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: Regex grouping error: Invalid close ], no matching open [ detected\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 正则表达式分组错误:无效的关闭\"]\",未检测到匹配的打开\"[\"\n"
|
||||
|
||||
#: ../parser_regex.c:257 ../parser_regex.c:256
|
||||
#, c-format
|
||||
msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 正则表达式分组错误:超过了{}的最大嵌套\n"
|
||||
|
||||
#: ../parser_policy.c:366 ../parser_policy.c:339
|
||||
#, c-format
|
||||
msgid "ERROR processing policydb rules for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "处理配置文件 %s 的policydb规则时出错,加载失败\n"
|
||||
|
||||
#: ../parser_policy.c:396 ../parser_policy.c:369
|
||||
#, c-format
|
||||
msgid "ERROR replacing aliases for profile %s, failed to load\n"
|
||||
msgstr ""
|
||||
msgstr "替换配置文件 %s 的别名时出错,加载失败\n"
|
||||
|
||||
#: ../parser_interface.c:635 ../parser_interface.c:638
|
||||
#, c-format
|
||||
msgid "%s: Unable to write %s\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 无法写入 %s\n"
|
||||
|
||||
#: ../parser_main.c:721
|
||||
#, c-format
|
||||
msgid "Error: Could not read binary profile or cache file %s: %s.\n"
|
||||
msgstr ""
|
||||
msgstr "错误:无法读取二进制配置文件或缓存文件 %s:%s。\n"
|
||||
|
||||
#: ../parser_main.c:811
|
||||
#, c-format
|
||||
msgid "Error: Could not read cache file '%s', skipping...\n"
|
||||
msgstr ""
|
||||
msgstr "错误:无法读取缓存文件\"%s\",正在跳过...\n"
|
||||
|
||||
#: ../parser_misc.c:575
|
||||
#, c-format
|
||||
msgid "Internal: unexpected %s mode character '%c' in input"
|
||||
msgstr ""
|
||||
msgstr "内部:输入中出现意外的 %s 模式字符\"%c\""
|
||||
|
||||
#: ../parser_misc.c:599
|
||||
#, c-format
|
||||
msgid "Internal error generated invalid %s perm 0x%x\n"
|
||||
msgstr ""
|
||||
msgstr "内部错误,生成了无效的 %s perm 0x%x\n"
|
||||
|
||||
#: parser_yacc.y:703
|
||||
msgid "owner prefix not allowed on mount rules"
|
||||
msgstr ""
|
||||
msgstr "装载规则上不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:720
|
||||
msgid "owner prefix not allowed on dbus rules"
|
||||
msgstr ""
|
||||
msgstr "dbus规则上不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:736
|
||||
msgid "owner prefix not allowed on signal rules"
|
||||
msgstr ""
|
||||
msgstr "信号规则中不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:752
|
||||
msgid "owner prefix not allowed on ptrace rules"
|
||||
msgstr ""
|
||||
msgstr "ptrace规则上不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:768
|
||||
msgid "owner prefix not allowed on unix rules"
|
||||
msgstr ""
|
||||
msgstr "unix规则上不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:794
|
||||
msgid "owner prefix not allowed on capability rules"
|
||||
msgstr ""
|
||||
msgstr "功能规则上不允许使用所有者前缀"
|
||||
|
||||
#: parser_yacc.y:1293
|
||||
#, c-format
|
||||
msgid "dbus rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "dbus规则:无效的条件组 %s=()"
|
||||
|
||||
#: parser_yacc.y:1371
|
||||
#, c-format
|
||||
msgid "unix rule: invalid conditional group %s=()"
|
||||
msgstr ""
|
||||
msgstr "unix规则:无效的条件组 %s=()"
|
||||
|
||||
#: ../parser_regex.c:368
|
||||
#, c-format
|
||||
msgid "%s: Regex error: trailing '\\' escape character\n"
|
||||
msgstr ""
|
||||
msgstr "%s: 正则表达式错误:尾随\"\\\"转义字符\n"
|
||||
|
@@ -226,13 +226,13 @@ static bool add_proc_access(Profile *prof, const char *rule)
|
||||
char *buffer = strdup("/proc/*/attr/apparmor/");
|
||||
if (!buffer) {
|
||||
PERROR("Memory allocation error\n");
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
new_ent = new_entry(buffer, AA_MAY_READ, NULL);
|
||||
if (!new_ent) {
|
||||
free(buffer);
|
||||
PERROR("Memory allocation error\n");
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
add_entry_to_policy(prof, new_ent);
|
||||
|
||||
@@ -240,13 +240,13 @@ static bool add_proc_access(Profile *prof, const char *rule)
|
||||
buffer = strdup("/sys/module/apparmor/parameters/enabled");
|
||||
if (!buffer) {
|
||||
PERROR("Memory allocation error\n");
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
new_ent = new_entry(buffer, AA_MAY_READ, NULL);
|
||||
if (!new_ent) {
|
||||
free(buffer);
|
||||
PERROR("Memory allocation error\n");
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
add_entry_to_policy(prof, new_ent);
|
||||
|
||||
@@ -254,17 +254,17 @@ static bool add_proc_access(Profile *prof, const char *rule)
|
||||
buffer = strdup(rule);
|
||||
if (!buffer) {
|
||||
PERROR("Memory allocation error\n");
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
new_ent = new_entry(buffer, AA_MAY_WRITE, NULL);
|
||||
if (!new_ent) {
|
||||
free(buffer);
|
||||
PERROR("Memory allocation error\n");
|
||||
return false;
|
||||
return FALSE;
|
||||
}
|
||||
add_entry_to_policy(prof, new_ent);
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define CHANGEPROFILE_PATH "/proc/*/attr/{apparmor/,}{current,exec}"
|
||||
|
@@ -363,7 +363,7 @@ public:
|
||||
struct cond_entry_list xattrs;
|
||||
|
||||
/* char *sub_name; */ /* subdomain name or NULL */
|
||||
/* bool default_deny; */
|
||||
/* int default_deny; */ /* TRUE or FALSE */
|
||||
bool local;
|
||||
|
||||
Profile *parent;
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#include <iomanip>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <unordered_map>
|
||||
#include <map>
|
||||
|
||||
#include "parser.h"
|
||||
#include "profile.h"
|
||||
@@ -35,7 +35,7 @@
|
||||
#define MAXRT_SIG 32 /* Max RT above MINRT_SIG */
|
||||
|
||||
/* Signal names mapped to and internal ordering */
|
||||
static unordered_map<string, int> signal_map = {
|
||||
static struct signal_map { const char *name; int num; } signal_map[] = {
|
||||
{"hup", 1},
|
||||
{"int", 2},
|
||||
{"quit", 3},
|
||||
@@ -55,8 +55,7 @@ static unordered_map<string, int> signal_map = {
|
||||
{"chld", 17},
|
||||
{"cont", 18},
|
||||
{"stop", 19},
|
||||
{"stp", 20}, // parser's previous name for SIGTSTP
|
||||
{"tstp", 20},
|
||||
{"stp", 20},
|
||||
{"ttin", 21},
|
||||
{"ttou", 22},
|
||||
{"urg", 23},
|
||||
@@ -65,12 +64,14 @@ static unordered_map<string, int> signal_map = {
|
||||
{"vtalrm", 26},
|
||||
{"prof", 27},
|
||||
{"winch", 28},
|
||||
{"io", 29}, // SIGIO == SIGPOLL
|
||||
{"poll", 29},
|
||||
{"io", 29},
|
||||
{"pwr", 30},
|
||||
{"sys", 31},
|
||||
{"emt", 32},
|
||||
{"exists", 35},
|
||||
|
||||
/* terminate */
|
||||
{NULL, 0}
|
||||
};
|
||||
|
||||
/* this table is ordered post sig_map[sig] mapping */
|
||||
@@ -95,7 +96,7 @@ static const char *const sig_names[MAXMAPPED_SIG + 1] = {
|
||||
"chld",
|
||||
"cont",
|
||||
"stop",
|
||||
"tstp",
|
||||
"stp",
|
||||
"ttin",
|
||||
"ttou",
|
||||
"urg",
|
||||
@@ -104,7 +105,7 @@ static const char *const sig_names[MAXMAPPED_SIG + 1] = {
|
||||
"vtalrm",
|
||||
"prof",
|
||||
"winch",
|
||||
"io", // SIGIO == SIGPOLL
|
||||
"io",
|
||||
"pwr",
|
||||
"sys",
|
||||
"emt",
|
||||
@@ -129,14 +130,12 @@ int find_signal_mapping(const char *sig)
|
||||
return -1;
|
||||
return MINRT_SIG + n;
|
||||
} else {
|
||||
// Can't use string_view because that requires C++17
|
||||
auto sigmap = signal_map.find(string(sig));
|
||||
if (sigmap != signal_map.end()) {
|
||||
return sigmap->second;
|
||||
} else {
|
||||
return -1;
|
||||
for (int i = 0; signal_map[i].name; i++) {
|
||||
if (strcmp(sig, signal_map[i].name) == 0)
|
||||
return signal_map[i].num;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void signal_rule::extract_sigs(struct value_list **list)
|
||||
|
@@ -6,7 +6,7 @@ PARSER_BIN=apparmor_parser
|
||||
PARSER=$(PARSER_DIR)/$(PARSER_BIN)
|
||||
# parser.conf to use in tests. Note that some test scripts have the parser options hardcoded, so passing PARSER_ARGS=... is not enough to override it.
|
||||
PARSER_ARGS=--config-file=./parser.conf
|
||||
PROVE_ARG=-f --directives -j2
|
||||
PROVE_ARG=-f --directives
|
||||
|
||||
ifeq ($(VERBOSE),1)
|
||||
PROVE_ARG+=-v
|
||||
@@ -37,11 +37,6 @@ error_output: $(PARSER)
|
||||
parser_sanity: $(PARSER) gen_xtrans gen_dbus
|
||||
$(Q)LANG=C APPARMOR_PARSER="$(PARSER)" ${PROVE} ${PROVE_ARG} ${TESTS}
|
||||
|
||||
# use this target for faster manual testing if you don't want/need to test all the profiles generated by gen-*.py
|
||||
parser_sanity-no-gen: clean $(PARSER)
|
||||
@echo WARNING: not creating the profiles using the gen-*.py scripts
|
||||
$(Q)LANG=C APPARMOR_PARSER="$(PARSER)" ${PROVE} ${PROVE_ARG} ${TESTS}
|
||||
|
||||
caching: $(PARSER)
|
||||
LANG=C ./caching.py -p "$(PARSER)" $(PYTEST_ARG)
|
||||
|
||||
|
@@ -879,28 +879,11 @@ verify_binary_equality "'$p1'x'$p2' link rules slash filtering" \
|
||||
@{BAR}=/mnt/
|
||||
/t { $p2 link @{FOO}/foo -> @{BAR}/bar, }"
|
||||
|
||||
verify_binary_equality "'$p1'x'$p2' attachment slash filtering" \
|
||||
"/t /bin/foo { }" \
|
||||
"/t /bin//foo { }" \
|
||||
"@{BAR}=/bin/
|
||||
/t @{BAR}/foo { }" \
|
||||
"@{FOO}=/foo
|
||||
/t /bin/@{FOO} { }" \
|
||||
"@{BAR}=/bin/
|
||||
@{FOO}=/foo
|
||||
/t @{BAR}/@{FOO} { }"
|
||||
|
||||
# verify comment at end of variable assignment is not treated as a value
|
||||
verify_binary_equality "comment at end of set var" \
|
||||
"/t { /bin/ r, }" \
|
||||
"@{BAR}=/bin/ #a tail comment
|
||||
/t { @{BAR} r, }"
|
||||
|
||||
verify_binary_equality "value like comment at end of set var" \
|
||||
"/t { /{bin/,#value} r, }" \
|
||||
"@{BAR}=bin/ \#value
|
||||
/t { /@{BAR} r, }"
|
||||
# Verify equality with mount detached source
|
||||
|
||||
verify_binary_equality "'$p1'x'$p2' mount detached vs empty source" \
|
||||
"/t { $p1 mount \"\" -> /destination, }" \
|
||||
"/t { $p2 mount detached -> /destination, }"
|
||||
|
||||
# This can potentially fail as ideally it requires a better dfa comparison
|
||||
# routine as it can generates hormomorphic dfas. The enumeration of the
|
||||
@@ -912,12 +895,6 @@ verify_binary_equality "'$p1'x'$p2' mount specific deny doesn't affect non-overl
|
||||
"/t { $p2 audit deny mount /s/** -> /**,
|
||||
mount options=bind /e/ -> /**, }"
|
||||
|
||||
if [ $fails -ne 0 ] || [ $errors -ne 0 ]
|
||||
then
|
||||
printf "ERRORS: %d\nFAILS: %d\n" $errors $fails 1>&2
|
||||
exit $((fails + errors))
|
||||
fi
|
||||
|
||||
|
||||
## priority override equivalence tests
|
||||
## compare single rule, to multi-rule profile where one rule overrides
|
||||
@@ -1082,6 +1059,29 @@ run_tests()
|
||||
"/t { /a r, }" \
|
||||
"/t { priority=-1 audit deny /* rwxlk, /a r, }"
|
||||
|
||||
# Tests that do not use priority keywords at all
|
||||
|
||||
verify_binary_equality "attachment slash filtering" \
|
||||
"/t /bin/foo { }" \
|
||||
"/t /bin//foo { }" \
|
||||
"@{BAR}=/bin/
|
||||
/t @{BAR}/foo { }" \
|
||||
"@{FOO}=/foo
|
||||
/t /bin/@{FOO} { }" \
|
||||
"@{BAR}=/bin/
|
||||
@{FOO}=/foo
|
||||
/t @{BAR}/@{FOO} { }"
|
||||
# verify comment at end of variable assignment is not treated as a value
|
||||
verify_binary_equality "comment at end of set var" \
|
||||
"/t { /bin/ r, }" \
|
||||
"@{BAR}=/bin/ #a tail comment
|
||||
/t { @{BAR} r, }"
|
||||
|
||||
verify_binary_equality "value like comment at end of set var" \
|
||||
"/t { /{bin/,#value} r, }" \
|
||||
"@{BAR}=bin/ \#value
|
||||
/t { /@{BAR} r, }"
|
||||
|
||||
# verify combinations of different priority levels
|
||||
# for single rule comparisons, rules should keep same expected result
|
||||
# even when the priorities are different.
|
||||
@@ -1109,8 +1109,13 @@ run_tests()
|
||||
done
|
||||
|
||||
[ -z "${verbose}" ] && printf "\n"
|
||||
printf "PASS\n"
|
||||
exit 0
|
||||
if [ $fails -ne 0 ] || [ $errors -ne 0 ]; then
|
||||
printf "ERRORS: %d\nFAILS: %d\n" $errors $fails 1>&2
|
||||
exit $((fails + errors))
|
||||
else
|
||||
printf "PASS\n"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -1218,7 +1223,7 @@ done
|
||||
|
||||
set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters
|
||||
|
||||
if [ $# -eq 0 -o -z $testtype] ; then
|
||||
if [ $# -eq 0 -o -z "$testtype" ] ; then
|
||||
run_tests "$@"
|
||||
exit $?
|
||||
fi
|
||||
|
7
parser/tst/simple_tests/mount/ok_24.sd
Normal file
7
parser/tst/simple_tests/mount/ok_24.sd
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
#=Description basic detached mount rule
|
||||
#=EXRESULT PASS
|
||||
#
|
||||
/usr/bin/foo {
|
||||
mount detached -> /foo,
|
||||
}
|
7
parser/tst/simple_tests/mount/ok_opt_86.sd
Normal file
7
parser/tst/simple_tests/mount/ok_opt_86.sd
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
#=Description detached mount rule with options
|
||||
#=EXRESULT PASS
|
||||
#
|
||||
/usr/bin/foo {
|
||||
mount options=(ro) fstype=ext4 detached -> /destination,
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user