1
0
mirror of https://github.com/systemd/systemd synced 2026-03-15 09:34:47 +01:00

Compare commits

..

No commits in common. "a2031de849da52aa85b7e4326c0112ed7e5b5672" and "7df7ba457c476b3fa0d0e88f88e03b6355012303" have entirely different histories.

3 changed files with 70 additions and 95 deletions

View File

@ -666,10 +666,6 @@ mouse:bluetooth:v0000p0000:name:Surface Mouse:*
mouse:usb:v045ep0823:name:Microsoft Microsoft?? Classic IntelliMouse??:* mouse:usb:v045ep0823:name:Microsoft Microsoft?? Classic IntelliMouse??:*
MOUSE_DPI=3200@1000 MOUSE_DPI=3200@1000
# Microsoft Pro Intellimouse
mouse:usb:v045ep082a:name:Microsoft Microsoft Pro Intellimouse Mouse:*
MOUSE_DPI=1600@1000
########################################## ##########################################
# Mionix # Mionix
########################################## ##########################################

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later # SPDX-License-Identifier: LGPL-2.1-or-later
# #
# Korean translation for the systemd. # Korean translation for the systemd.
# Seong-ho Cho <shcho@gnome.org>, 2015, 2021. # Seong-ho Cho <shcho@gnome.org>, 2015.
# Dongsu Park <dongsu@endocode.com>, 2015. # Dongsu Park <dongsu@endocode.com>, 2015.
# simmon <simmon@nplob.com>, 2021. # simmon <simmon@nplob.com>, 2021.
msgid "" msgid ""
@ -70,7 +70,7 @@ msgstr "홈 영역 생성"
#: src/home/org.freedesktop.home1.policy:14 #: src/home/org.freedesktop.home1.policy:14
msgid "Authentication is required to create a user's home area." msgid "Authentication is required to create a user's home area."
msgstr "사용자 홈 영역을 만들려면 인증이 필요합니다." msgstr "사용자 홈 영역을 생성하기 위해서는 인증이 필요합니다."
#: src/home/org.freedesktop.home1.policy:23 #: src/home/org.freedesktop.home1.policy:23
msgid "Remove a home area" msgid "Remove a home area"
@ -78,7 +78,7 @@ msgstr "홈 영역 제거"
#: src/home/org.freedesktop.home1.policy:24 #: src/home/org.freedesktop.home1.policy:24
msgid "Authentication is required to remove a user's home area." msgid "Authentication is required to remove a user's home area."
msgstr "사용자 홈 영역을 제거하려면 인증이 필요합니다." msgstr "사용자 홈 영역을 제거하기 위해서는 인증이 필요합니다."
#: src/home/org.freedesktop.home1.policy:33 #: src/home/org.freedesktop.home1.policy:33
msgid "Check credentials of a home area" msgid "Check credentials of a home area"
@ -87,7 +87,7 @@ msgstr "홈 영역 자격증명 확인"
#: src/home/org.freedesktop.home1.policy:34 #: src/home/org.freedesktop.home1.policy:34
msgid "" msgid ""
"Authentication is required to check credentials against a user's home area." "Authentication is required to check credentials against a user's home area."
msgstr "사용자 홈 영역의 자격 증명 확인하려면 인증이 필요합니다." msgstr "사용자 홈 영역의 자격증명 확인하려면 인증이 필요합니다."
#: src/home/org.freedesktop.home1.policy:43 #: src/home/org.freedesktop.home1.policy:43
msgid "Update a home area" msgid "Update a home area"
@ -99,20 +99,20 @@ msgstr "사용자 홈 영역을 최신화 하려면 인증이 필요합니다."
#: src/home/org.freedesktop.home1.policy:53 #: src/home/org.freedesktop.home1.policy:53
msgid "Resize a home area" msgid "Resize a home area"
msgstr "홈 영역을 조" msgstr "홈 영역을 조"
#: src/home/org.freedesktop.home1.policy:54 #: src/home/org.freedesktop.home1.policy:54
msgid "Authentication is required to resize a user's home area." msgid "Authentication is required to resize a user's home area."
msgstr "사용자 홈 영역을 조정하려면 인증이 필요합니다." msgstr "사용자 홈 영역의 크기를 조절하려면 인증이 필요합니다."
#: src/home/org.freedesktop.home1.policy:63 #: src/home/org.freedesktop.home1.policy:63
msgid "Change password of a home area" msgid "Change password of a home area"
msgstr "홈 영역 암호 변경" msgstr "홈 영역의 비밀번호를 변경"
#: src/home/org.freedesktop.home1.policy:64 #: src/home/org.freedesktop.home1.policy:64
msgid "" msgid ""
"Authentication is required to change the password of a user's home area." "Authentication is required to change the password of a user's home area."
msgstr "사용자 홈 영역의 암호를 바꾸려면 인증이 필요합니다." msgstr "사용자 홈 영역의 비밀번호를 변경하려면 비밀번호가 필요합니다."
#: src/hostname/org.freedesktop.hostname1.policy:20 #: src/hostname/org.freedesktop.hostname1.policy:20
msgid "Set hostname" msgid "Set hostname"
@ -142,11 +142,11 @@ msgstr "로컬 머신 정보를 설정하려면 인증이 필요합니다."
#: src/hostname/org.freedesktop.hostname1.policy:51 #: src/hostname/org.freedesktop.hostname1.policy:51
msgid "Get product UUID" msgid "Get product UUID"
msgstr "제품 UUID 가져오기" msgstr "제품 UUID를 획득"
#: src/hostname/org.freedesktop.hostname1.policy:52 #: src/hostname/org.freedesktop.hostname1.policy:52
msgid "Authentication is required to get product UUID." msgid "Authentication is required to get product UUID."
msgstr "제품 UUID를 가져오려면 인증이 필요합니다." msgstr "제품 UUID를 얻기 위해서는 인증이 필요합니다."
#: src/import/org.freedesktop.import1.policy:22 #: src/import/org.freedesktop.import1.policy:22
msgid "Import a VM or container image" msgid "Import a VM or container image"
@ -166,11 +166,11 @@ msgstr "가상 머신 또는 컨테이너의 이미지를 내보내려면 인증
#: src/import/org.freedesktop.import1.policy:42 #: src/import/org.freedesktop.import1.policy:42
msgid "Download a VM or container image" msgid "Download a VM or container image"
msgstr "가상 머신 또는 컨테이너 이미지 다운로드" msgstr "가상머신 또는 컨테이너 이미지 내려받기"
#: src/import/org.freedesktop.import1.policy:43 #: src/import/org.freedesktop.import1.policy:43
msgid "Authentication is required to download a VM or container image" msgid "Authentication is required to download a VM or container image"
msgstr "가상 머신 또는 컨테이너 이미지를 다운로드하려면 인증이 필요합니다" msgstr "가상머신 또는 컨테이너 이미지를 내려받기하려면 인증이 필요합니다"
#: src/locale/org.freedesktop.locale1.policy:22 #: src/locale/org.freedesktop.locale1.policy:22
msgid "Set system locale" msgid "Set system locale"
@ -282,13 +282,13 @@ msgstr ""
#: src/login/org.freedesktop.login1.policy:117 #: src/login/org.freedesktop.login1.policy:117
msgid "Allow applications to inhibit system handling of the reboot key" msgid "Allow applications to inhibit system handling of the reboot key"
msgstr "프로그램의 재부팅 키 시스템 동작 방지 허용" msgstr "응용프로그램이 리부트 키 처리하는 시스템 방지 허용"
#: src/login/org.freedesktop.login1.policy:118 #: src/login/org.freedesktop.login1.policy:118
msgid "" msgid ""
"Authentication is required for an application to inhibit system handling of " "Authentication is required for an application to inhibit system handling of "
"the reboot key." "the reboot key."
msgstr "프로그램의 재부팅 키 시스템 동작 방지를 허용하려면 인증이 필요합니다." msgstr "응용프로그램이 시스템 리부트 키 처리 방지 요청을 허용하려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:128 #: src/login/org.freedesktop.login1.policy:128
msgid "Allow non-logged-in user to run programs" msgid "Allow non-logged-in user to run programs"
@ -399,19 +399,17 @@ msgstr "다른 사용자가 로그인 했을 때 시스템이 정지 상태진
msgid "" msgid ""
"Authentication is required to halt the system while other users are logged " "Authentication is required to halt the system while other users are logged "
"in." "in."
msgstr "" msgstr "다른 사용자가 로그인 했을 때 시스템을 정지 상태로 놓으려면 인증이 필요합니다."
"다른 사용자가 로그인 했을 때 시스템을 정지 상태로 놓으려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:257 #: src/login/org.freedesktop.login1.policy:257
msgid "Halt the system while an application is inhibiting this" msgid "Halt the system while an application is inhibiting this"
msgstr "프로그램에서 전원 끄기를 막을 때 시스템 전원 끄기" msgstr "응용프로그램이 이와 같이 금지 상태일 때에 시스템 정지 상태 진입"
#: src/login/org.freedesktop.login1.policy:258 #: src/login/org.freedesktop.login1.policy:258
msgid "" msgid ""
"Authentication is required to halt the system while an application is " "Authentication is required to halt the system while an application is "
"inhibiting this." "inhibiting this."
msgstr "" msgstr "응용프로그램이 이와 같이 금지 할 때에는 시스템을 정지 할 때에는인증이 필요합니다."
"프로그램에서 전원 끄기를 막을 때 시스템 전원을 끄려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:268 #: src/login/org.freedesktop.login1.policy:268
msgid "Suspend the system" msgid "Suspend the system"
@ -434,15 +432,15 @@ msgstr ""
#: src/login/org.freedesktop.login1.policy:289 #: src/login/org.freedesktop.login1.policy:289
msgid "Suspend the system while an application is inhibiting this" msgid "Suspend the system while an application is inhibiting this"
msgstr "프로그램에서 대기 모드 진입을 막을 때 시스템 대기 상태 진입" msgstr "프로그램이 절전 상태 진입을 못하게 요청할 때 시스템 절전 상태 진입"
#: src/login/org.freedesktop.login1.policy:290 #: src/login/org.freedesktop.login1.policy:290
msgid "" msgid ""
"Authentication is required to suspend the system while an application is " "Authentication is required to suspend the system while an application is "
"inhibiting this." "inhibiting this."
msgstr "" msgstr ""
"프로그램에서 대기 모드 진입을 막을 때 시스템을 대기 상태로 설정하려면 인증이 " "프로그램이 절전 상태 진입을 못하게 요청할 때 시스템을 절전 상태로 놓으려면 인"
"필요합니다." "증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:300 #: src/login/org.freedesktop.login1.policy:300
msgid "Hibernate the system" msgid "Hibernate the system"
@ -461,21 +459,21 @@ msgid ""
"Authentication is required to hibernate the system while other users are " "Authentication is required to hibernate the system while other users are "
"logged in." "logged in."
msgstr "" msgstr ""
"다른 사용자가 로그인 했을 때 시스템을 최대 절전 상태로 설정하려면 인증이 필요" "다른 사용자가 로그인 했을 때 시스템을 최대 절전 상태로 놓으려면 인증이 필요합"
"니다." "니다."
#: src/login/org.freedesktop.login1.policy:321 #: src/login/org.freedesktop.login1.policy:321
msgid "Hibernate the system while an application is inhibiting this" msgid "Hibernate the system while an application is inhibiting this"
msgstr "" msgstr ""
"프로그램에서 최대 절전 모드로의 진입을 막을 때 시스템 최대 절전 상태 진입" "프로그램이 최대 절전 상태 진입을 못하게 요청할 때 시스템 최대 절전 상태 진입"
#: src/login/org.freedesktop.login1.policy:322 #: src/login/org.freedesktop.login1.policy:322
msgid "" msgid ""
"Authentication is required to hibernate the system while an application is " "Authentication is required to hibernate the system while an application is "
"inhibiting this." "inhibiting this."
msgstr "" msgstr ""
"프로그램에서 최대 절전 모드로의 진입을 막을 때 시스템을 최대 절전 상태로 설정" "프로그램이 최대 절전 상태 진입을 못하게 요청할 때 시스템을 최대 절전 상태로 "
"려면 인증이 필요합니다." "놓으려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:332 #: src/login/org.freedesktop.login1.policy:332
msgid "Manage active sessions, users and seats" msgid "Manage active sessions, users and seats"
@ -495,11 +493,11 @@ msgstr "활성화 세션을 잠금 또는 잠금 해제하려면 인증이 필
#: src/login/org.freedesktop.login1.policy:352 #: src/login/org.freedesktop.login1.policy:352
msgid "Set the reboot \"reason\" in the kernel" msgid "Set the reboot \"reason\" in the kernel"
msgstr "커널에서 재시작 \"사유\" 설정" msgstr "커널이 재시작 \"원인\"을 설정합니다"
#: src/login/org.freedesktop.login1.policy:353 #: src/login/org.freedesktop.login1.policy:353
msgid "Authentication is required to set the reboot \"reason\" in the kernel." msgid "Authentication is required to set the reboot \"reason\" in the kernel."
msgstr "커널에서 재시작 \"사유\"를 설정하게 하려면 인증이 필요합니다." msgstr "커널에서 \"reason\"으로 재동작 설정하려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:363 #: src/login/org.freedesktop.login1.policy:363
msgid "Indicate to the firmware to boot to setup interface" msgid "Indicate to the firmware to boot to setup interface"
@ -513,23 +511,23 @@ msgstr "설정 화면으로 부팅하도록 펌웨어에게 지시하려면 인
#: src/login/org.freedesktop.login1.policy:374 #: src/login/org.freedesktop.login1.policy:374
msgid "Indicate to the boot loader to boot to the boot loader menu" msgid "Indicate to the boot loader to boot to the boot loader menu"
msgstr "부트로더에 부팅할 부트로더 메뉴 표시" msgstr "부트로더 메뉴에 부팅하기 위해 부트로더에 표시하기"
#: src/login/org.freedesktop.login1.policy:375 #: src/login/org.freedesktop.login1.policy:375
msgid "" msgid ""
"Authentication is required to indicate to the boot loader to boot to the " "Authentication is required to indicate to the boot loader to boot to the "
"boot loader menu." "boot loader menu."
msgstr "부트로더 메뉴에 부팅할 부트로더를 나타내려면 인증이 필요합니다." msgstr "부트로더에 부팅하려면 부트로더 메뉴에 표시하려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:385 #: src/login/org.freedesktop.login1.policy:385
msgid "Indicate to the boot loader to boot a specific entry" msgid "Indicate to the boot loader to boot a specific entry"
msgstr "부팅할 특정 항목을 부트로더에 표시" msgstr "특정 항목으로 재시작 하기 위해 부트로더 표시"
#: src/login/org.freedesktop.login1.policy:386 #: src/login/org.freedesktop.login1.policy:386
msgid "" msgid ""
"Authentication is required to indicate to the boot loader to boot into a " "Authentication is required to indicate to the boot loader to boot into a "
"specific boot loader entry." "specific boot loader entry."
msgstr "부팅할 특정 항목을 부트로더에 표시하려면 인증이 필요합니다." msgstr "부트로더에 지정한 부트로더 에서 부트하거나 지정한 부트로더 진입을 표시하려면 인증이 필요합니다."
#: src/login/org.freedesktop.login1.policy:396 #: src/login/org.freedesktop.login1.policy:396
msgid "Set a wall message" msgid "Set a wall message"
@ -537,7 +535,7 @@ msgstr "wall 메시지 설정"
#: src/login/org.freedesktop.login1.policy:397 #: src/login/org.freedesktop.login1.policy:397
msgid "Authentication is required to set a wall message" msgid "Authentication is required to set a wall message"
msgstr "모든 사용자에게 작성할 wall 메시지를 설정하려면 인증이 필요합니다" msgstr "wall 메시지를 설정하려면 인증이 필요합니다"
#: src/login/org.freedesktop.login1.policy:406 #: src/login/org.freedesktop.login1.policy:406
msgid "Change Session" msgid "Change Session"
@ -545,7 +543,7 @@ msgstr "세션 변경"
#: src/login/org.freedesktop.login1.policy:407 #: src/login/org.freedesktop.login1.policy:407
msgid "Authentication is required to change the virtual terminal." msgid "Authentication is required to change the virtual terminal."
msgstr "가상 터미널을 바꾸려면 인증이 필요합니다." msgstr "가상 터미널을 변경하려면 인증이 필요합니다."
#: src/machine/org.freedesktop.machine1.policy:22 #: src/machine/org.freedesktop.machine1.policy:22
msgid "Log into a local container" msgid "Log into a local container"
@ -581,12 +579,12 @@ msgstr "로컬 호스트의 쉘을 획득하려면 인증이 필요합니다."
#: src/machine/org.freedesktop.machine1.policy:64 #: src/machine/org.freedesktop.machine1.policy:64
msgid "Acquire a pseudo TTY in a local container" msgid "Acquire a pseudo TTY in a local container"
msgstr "로컬 컨테이너에서 사 TTY 획득" msgstr "로컬 컨테이너에서 사 TTY 획득"
#: src/machine/org.freedesktop.machine1.policy:65 #: src/machine/org.freedesktop.machine1.policy:65
msgid "" msgid ""
"Authentication is required to acquire a pseudo TTY in a local container." "Authentication is required to acquire a pseudo TTY in a local container."
msgstr "로컬 컨테이너에서 사 TTY를 획득하려면 인증이 필요합니다." msgstr "로컬 컨테이너에서 사 TTY를 획득하려면 인증이 필요합니다."
#: src/machine/org.freedesktop.machine1.policy:74 #: src/machine/org.freedesktop.machine1.policy:74
msgid "Acquire a pseudo TTY on the local host" msgid "Acquire a pseudo TTY on the local host"
@ -594,7 +592,7 @@ msgstr "로컬 호스트에서 유사 TTY 획득"
#: src/machine/org.freedesktop.machine1.policy:75 #: src/machine/org.freedesktop.machine1.policy:75
msgid "Authentication is required to acquire a pseudo TTY on the local host." msgid "Authentication is required to acquire a pseudo TTY on the local host."
msgstr "로컬 호스트에서 사 TTY를 획득하려면 인증이 필요합니다." msgstr "로컬 호스트에서 사 TTY를 획득하려면 인증이 필요합니다."
#: src/machine/org.freedesktop.machine1.policy:84 #: src/machine/org.freedesktop.machine1.policy:84
msgid "Manage local virtual machines and containers" msgid "Manage local virtual machines and containers"
@ -721,11 +719,11 @@ msgstr "DNS 설정을 재시작하려면 인증이 필요합니다."
#: src/network/org.freedesktop.network1.policy:143 #: src/network/org.freedesktop.network1.policy:143
msgid "DHCP server sends force renew message" msgid "DHCP server sends force renew message"
msgstr "DHCP 서버에서 새 메시지 강제 전송" msgstr "DHCP 서버는 새로운 메시지를 강제로 보냅니다"
#: src/network/org.freedesktop.network1.policy:144 #: src/network/org.freedesktop.network1.policy:144
msgid "Authentication is required to send force renew message." msgid "Authentication is required to send force renew message."
msgstr "강제로 새 메시지를 보내려면 인증이 필요합니다." msgstr "새로운 메시지를 보내려면 인증이 필요합니다."
#: src/network/org.freedesktop.network1.policy:154 #: src/network/org.freedesktop.network1.policy:154
msgid "Renew dynamic addresses" msgid "Renew dynamic addresses"
@ -733,15 +731,15 @@ msgstr "동적 주소 갱신"
#: src/network/org.freedesktop.network1.policy:155 #: src/network/org.freedesktop.network1.policy:155
msgid "Authentication is required to renew dynamic addresses." msgid "Authentication is required to renew dynamic addresses."
msgstr "동적 주소를 새로 바꾸려면 인증이 필요합니다." msgstr "동적주소를 새로 변경하려면 인증이 필요합니다."
#: src/network/org.freedesktop.network1.policy:165 #: src/network/org.freedesktop.network1.policy:165
msgid "Reload network settings" msgid "Reload network settings"
msgstr "네트워크 설정 새로 불러오기" msgstr "네트웍설정 다시 적재함"
#: src/network/org.freedesktop.network1.policy:166 #: src/network/org.freedesktop.network1.policy:166
msgid "Authentication is required to reload network settings." msgid "Authentication is required to reload network settings."
msgstr "네트워크 설정을 다시 불러오려면 인증이 필요합니다." msgstr "네트웍 설정을 재적재하려면 인증이 필요합니다."
#: src/network/org.freedesktop.network1.policy:176 #: src/network/org.freedesktop.network1.policy:176
msgid "Reconfigure network interface" msgid "Reconfigure network interface"
@ -749,7 +747,7 @@ msgstr "네트워크 인터페이스 재설정"
#: src/network/org.freedesktop.network1.policy:177 #: src/network/org.freedesktop.network1.policy:177
msgid "Authentication is required to reconfigure network interface." msgid "Authentication is required to reconfigure network interface."
msgstr "네트워크 연결 장치를 다시 설정하려면 인증이 필요합니다." msgstr "네트웍 연결장치를 재설정하려면 인증이 필요합니다."
#: src/portable/org.freedesktop.portable1.policy:13 #: src/portable/org.freedesktop.portable1.policy:13
msgid "Inspect a portable service image" msgid "Inspect a portable service image"
@ -873,10 +871,12 @@ msgstr "'$(unit)' 서비스 유닛 속성을 설정하려면 인증이 필요합
msgid "" msgid ""
"Authentication is required to delete files and directories associated with " "Authentication is required to delete files and directories associated with "
"'$(unit)'." "'$(unit)'."
msgstr "" msgstr "'$(unit)' 과 함께 지정된 파일 또는 디렉토리 삭제에는 인증이 필요합니다."
"'$(unit)'에 해당하는 파일 또는 디렉터리를 삭제하려면 인증이 필요합니다."
#: src/core/dbus-unit.c:757 #: src/core/dbus-unit.c:757
msgid "" msgid ""
"Authentication is required to freeze or thaw the processes of '$(unit)' unit." "Authentication is required to freeze or thaw the processes of '$(unit)' unit."
msgstr "'$(unit)'단위의 처리를 동결 또는 해제하려면 인증이 필요합니다." msgstr "'$(unit)'단위의 처리를 동결 또는 해제하기 위해서는 인증이 필요합니다."
#~ msgid "Authentication is required to kill '$(unit)'."
#~ msgstr "'$(unit)' 서비스 유닛을 강제로 끝내려면 인증이 필요합니다."

View File

@ -4,21 +4,18 @@
import sys import sys
import collections import collections
import re import re
import concurrent.futures
from xml_helper import xml_parse, xml_print, tree from xml_helper import xml_parse, xml_print, tree
from copy import deepcopy
COLOPHON = '''\ COLOPHON = '''\
This index contains {count} entries in {sections} sections, This index contains {count} entries in {sections} sections,
referring to {pages} individual manual pages. referring to {pages} individual manual pages.
''' '''
def _extract_directives(page, names): def _extract_directives(directive_groups, formatting, page):
directive_groups = {name:collections.defaultdict(set) for name in names}
t = xml_parse(page) t = xml_parse(page)
section = t.find('./refmeta/manvolnum').text section = t.find('./refmeta/manvolnum').text
pagename = t.find('./refmeta/refentrytitle').text pagename = t.find('./refmeta/refentrytitle').text
formatting = {}
storopt = directive_groups['options'] storopt = directive_groups['options']
for variablelist in t.iterfind('.//variablelist'): for variablelist in t.iterfind('.//variablelist'):
@ -34,7 +31,7 @@ def _extract_directives(page, names):
if text.startswith('-'): if text.startswith('-'):
# for options, merge options with and without mandatory arg # for options, merge options with and without mandatory arg
text = text.partition('=')[0] text = text.partition('=')[0]
stor[text].add((pagename, section)) stor[text].append((pagename, section))
if text not in formatting: if text not in formatting:
# use element as formatted display # use element as formatted display
if name.text[-1] in "= '": if name.text[-1] in "= '":
@ -45,7 +42,7 @@ def _extract_directives(page, names):
formatting[text] = name formatting[text] = name
extra = variablelist.attrib.get('extra-ref') extra = variablelist.attrib.get('extra-ref')
if extra: if extra:
stor[extra].add((pagename, section)) stor[extra].append((pagename, section))
if extra not in formatting: if extra not in formatting:
elt = tree.Element("varname") elt = tree.Element("varname")
elt.text= extra elt.text= extra
@ -71,13 +68,13 @@ def _extract_directives(page, names):
name.text = text name.text = text
if text.endswith('/'): if text.endswith('/'):
text = text[:-1] text = text[:-1]
storfile[text].add((pagename, section)) storfile[text].append((pagename, section))
if text not in formatting: if text not in formatting:
# use element as formatted display # use element as formatted display
formatting[text] = name formatting[text] = name
else: else:
text = ' '.join(name.itertext()) text = ' '.join(name.itertext())
storfile[text].add((pagename, section)) storfile[text].append((pagename, section))
formatting[text] = name formatting[text] = name
storfile = directive_groups['constants'] storfile = directive_groups['constants']
@ -87,7 +84,7 @@ def _extract_directives(page, names):
name.tail = '' name.tail = ''
if name.text.startswith('('): # a cast, strip it if name.text.startswith('('): # a cast, strip it
name.text = name.text.partition(' ')[2] name.text = name.text.partition(' ')[2]
storfile[name.text].add((pagename, section)) storfile[name.text].append((pagename, section))
formatting[name.text] = name formatting[name.text] = name
storfile = directive_groups['specifiers'] storfile = directive_groups['specifiers']
@ -96,30 +93,18 @@ def _extract_directives(page, names):
continue continue
if name.attrib.get('index') == 'false': if name.attrib.get('index') == 'false':
continue continue
storfile[name.text].add((pagename, section)) storfile[name.text].append((pagename, section))
formatting[name.text] = name formatting[name.text] = name
for name in t.iterfind(".//literal[@class='specifiers']"): for name in t.iterfind(".//literal[@class='specifiers']"):
storfile[name.text].add((pagename, section)) storfile[name.text].append((pagename, section))
formatting[name.text] = name formatting[name.text] = name
# Serialize to allow pickling
formatting = {name:xml_print(value) for name, value in formatting.items()}
return directive_groups, formatting
def extract_directives(arg):
page, names = arg
try:
return _extract_directives(page, names)
except Exception:
raise ValueError("Failed to process {}".format(page))
def _make_section(template, name, directives, formatting): def _make_section(template, name, directives, formatting):
varlist = template.find(".//*[@id='{}']".format(name)) varlist = template.find(".//*[@id='{}']".format(name))
for varname, manpages in sorted(directives.items()): for varname, manpages in sorted(directives.items()):
entry = tree.SubElement(varlist, 'varlistentry') entry = tree.SubElement(varlist, 'varlistentry')
term = tree.SubElement(entry, 'term') term = tree.SubElement(entry, 'term')
display = tree.fromstring(formatting[varname]) display = deepcopy(formatting[varname])
term.append(display) term.append(display)
para = tree.SubElement(tree.SubElement(entry, 'listitem'), 'para') para = tree.SubElement(tree.SubElement(entry, 'listitem'), 'para')
@ -169,26 +154,20 @@ def make_page(template_path, xml_files):
"Extract directives from xml_files and return XML index tree." "Extract directives from xml_files and return XML index tree."
template = xml_parse(template_path) template = xml_parse(template_path)
names = [vl.get('id') for vl in template.iterfind('.//variablelist')] names = [vl.get('id') for vl in template.iterfind('.//variablelist')]
directive_groups = {name:collections.defaultdict(list)
with concurrent.futures.ProcessPoolExecutor() as pool: for name in names}
args = ((xml_file, names) for xml_file in xml_files)
results = list(pool.map(extract_directives, args))
directive_groups = {name:collections.defaultdict(set) for name in names}
formatting = {} formatting = {}
for d_g, f in reversed(results): for page in xml_files:
for group, mapping in d_g.items(): try:
for name, value in mapping.items(): _extract_directives(directive_groups, formatting, page)
directive_groups[group][name].update(value) except Exception:
raise ValueError("failed to process " + page)
formatting.update(f)
return _make_page(template, directive_groups, formatting) return _make_page(template, directive_groups, formatting)
def main(output, template_path, *xml_files): if __name__ == '__main__':
with open(output, 'wb') as f: with open(sys.argv[1], 'wb') as f:
template_path = sys.argv[2]
xml_files = sys.argv[3:]
xml = make_page(template_path, xml_files) xml = make_page(template_path, xml_files)
f.write(xml_print(xml)) f.write(xml_print(xml))
if __name__ == '__main__':
main(*sys.argv[1:])