# Swedish translation for Lynx
# Copyright � 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
# Peter Karlsson <peter@softwolves.pp.se>, 2000-2004.
#
msgid ""
msgstr ""
"Project-Id-Version: lynx 2.8.6-dev8\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-12-18 16:51-0500\n"
"PO-Revision-Date: 2004-11-27 12:30+0100\n"
"Last-Translator: Peter Karlsson <peter@softwolves.pp.se>\n"
"Language-Team: Swedish <sv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#. ******************************************************************
#. * The following definitions are for status line prompts, messages, or
#. * warnings issued by Lynx during program execution.  You can modify
#. * them to make them more appropriate for your site.  We recommend that
#. * you extend these definitions to other languages using the gettext
#. * library.  There are also scattered uses of 'gettext()' throughout the
#. * Lynx source, covering all but those messages which (a) are used for
#. * debugging (CTRACE) or (b) are constants used in interaction with
#. * other programs.
#. *
#. * Links to collections of alternate definitions, developed by the Lynx
#. * User Community, are maintained in Lynx links:
#. *
#. *    http://www.subir.com/lynx.html
#. *
#. * See ABOUT-NLS and po/readme for details and location of contributed
#. * translations.  When no translation is available, the English default is
#. * used.
#.
#: LYMessages.c:30
#, c-format
msgid "Alert!: %s"
msgstr "Varning!: %s"

#: LYMessages.c:31
msgid "Welcome"
msgstr "V�lkommen"

#: LYMessages.c:32
msgid "Are you sure you want to quit?"
msgstr "�r du s�ker att du vill avsluta?"

#: LYMessages.c:34
msgid "Really exit from Lynx?"
msgstr "Verkligen avsluta Lynx?"

#: LYMessages.c:36
msgid "Connection interrupted."
msgstr "Anslutningen avbr�ts."

#: LYMessages.c:37
msgid "Data transfer interrupted."
msgstr "Data�verf�ringen avbr�ts."

#: LYMessages.c:38
msgid "Cancelled!!!"
msgstr "Avbruten!!!"

#: LYMessages.c:39
msgid "Cancelling!"
msgstr "Avbryter!"

#: LYMessages.c:40
msgid "Excellent!!!"
msgstr "Underbart!!!"

#: LYMessages.c:41
msgid "OK"
msgstr "OK"

#: LYMessages.c:42
msgid "Done!"
msgstr "Klar!"

#: LYMessages.c:43
msgid "Bad request!"
msgstr "Felaktig f�rfr�gan!"

#: LYMessages.c:44
msgid "previous"
msgstr "f�reg�ende"

#: LYMessages.c:45
msgid "next screen"
msgstr "n�sta sk�rm"

#: LYMessages.c:46
msgid "HELP!"
msgstr "HJ�LP!"

#: LYMessages.c:47
msgid ", help on "
msgstr ", hj�lp om "

#. #define HELP
#: LYMessages.c:49
msgid "Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back."
msgstr "Kommandon: Piltangenter flyttar, \"?\" ger hj�lp, \"q\" avslutar, \"<-\" �terg�r."

#. #define MOREHELP
#: LYMessages.c:51
msgid "-- press space for more, use arrow keys to move, '?' for help, 'q' to quit."
msgstr "-- tryck blanksteg f�r mer, piltangenter flyttar, \"?\" ger hj�lp, \"q\" avslutar."

#: LYMessages.c:52
msgid "-- press space for next page --"
msgstr "-- tryck blanksteg f�r n�sta sida --"

#: LYMessages.c:53
msgid "URL too long"
msgstr "Adressen f�r l�ng"

#. Inactive input fields, messages used with -tna option - kw
#. #define FORM_LINK_TEXT_MESSAGE_INA
#: LYMessages.c:59
msgid "(Text entry field) Inactive.  Press <return> to activate."
msgstr "(Textinmatningsf�lt) Inaktivt. Tryck <Enter> f�r att aktivera."

#. #define FORM_LINK_TEXTAREA_MESSAGE_INA
#: LYMessages.c:61
msgid "(Textarea) Inactive.  Press <return> to activate."
msgstr "(Textf�lt) Inaktivt. Tryck <Enter> f�r att aktivera."

#. #define FORM_LINK_TEXTAREA_MESSAGE_INA_E
#: LYMessages.c:63
#, c-format
msgid "(Textarea) Inactive.  Press <return> to activate (%s for editor)."
msgstr "(Textf�lt) Inaktivt. Tryck <Enter> f�r att aktivera (%s f�r redigeringsprogram)."

#. #define FORM_LINK_TEXT_SUBMIT_MESSAGE_INA
#: LYMessages.c:65
msgid "(Form field) Inactive.  Use <return> to edit."
msgstr "(Formul�rf�lt) Inaktivt. Tryck <Enter> f�r att redigera."

#. #define FORM_TEXT_SUBMIT_MESSAGE_INA_X
#: LYMessages.c:67
#, c-format
msgid "(Form field) Inactive.  Use <return> to edit (%s to submit with no cache)."
msgstr "(Formul�rf�lt) Inaktivt. Tryck <Enter> f�r att redigera (%s skickar utan cache)."

#. #define FORM_TEXT_RESUBMIT_MESSAGE_INA
#: LYMessages.c:69
msgid "(Form field) Inactive. Press <return> to edit, press <return> twice to submit."
msgstr "(Formul�rf�lt) Inaktivt. Redigera med <Enter>, tv� g�nger f�r att skicka."

#. #define FORM_TEXT_SUBMIT_MAILTO_MSG_INA
#: LYMessages.c:71
msgid "(mailto form field) Inactive.  Press <return> to change."
msgstr "(e-postformul�rf�lt) Inaktivt. Tryck <Enter> f�r att �ndra."

#. #define FORM_LINK_PASSWORD_MESSAGE_INA
#: LYMessages.c:73
msgid "(Password entry field) Inactive.  Press <return> to activate."
msgstr "(L�senordsinmatningsf�lt) Inaktivt. Tryck <Enter> f�r att aktivera."

#. #define FORM_LINK_FILE_UNM_MSG
#: LYMessages.c:76
msgid "UNMODIFIABLE file entry field.  Use UP or DOWN arrows or tab to move off."
msgstr "SKRIVSKYDDAT filinmatningsf�lt. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_FILE_MESSAGE
#: LYMessages.c:78
msgid "(File entry field) Enter filename.  Use UP or DOWN arrows or tab to move off."
msgstr "(Filinmatningsf�lt) Ange filnamn. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_TEXT_MESSAGE
#: LYMessages.c:80
msgid "(Text entry field) Enter text.  Use UP or DOWN arrows or tab to move off."
msgstr "(Textinmatningsf�lt) Ange text. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_TEXTAREA_MESSAGE
#: LYMessages.c:82
msgid "(Textarea) Enter text. Use UP/DOWN arrows or TAB to move off."
msgstr "(Textf�lt) Ange text. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_TEXTAREA_MESSAGE_E
#: LYMessages.c:84
#, c-format
msgid "(Textarea) Enter text. Use UP/DOWN arrows or TAB to move off (%s for editor)."
msgstr "(Textf�lt) Ange text. UPP-/NED-pil eller tabb l�mnar (%s redigerar med program)."

#. #define FORM_LINK_TEXT_UNM_MSG
#: LYMessages.c:86
msgid "UNMODIFIABLE form text field.  Use UP or DOWN arrows or tab to move off."
msgstr "SKRIVSKYDDAT formul�rtextf�lt. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_TEXT_SUBMIT_MESSAGE
#: LYMessages.c:88
msgid "(Form field) Enter text.  Use <return> to submit."
msgstr "(Formul�rf�lt) Ange text. Tryck <Enter> f�r att skicka."

#. #define FORM_LINK_TEXT_SUBMIT_MESSAGE_X
#: LYMessages.c:90
#, c-format
msgid "(Form field) Enter text.  Use <return> to submit (%s for no cache)."
msgstr "(Formul�rf�lt) Ange text. Tryck <Enter> f�r att skicka (%s f�rbig�r cache)."

#. #define FORM_LINK_TEXT_RESUBMIT_MESSAGE
#: LYMessages.c:92
msgid "(Form field) Enter text.  Use <return> to submit, arrows or tab to move off."
msgstr "(Formul�rf�lt) Ange text. <Enter> skickar, pilar eller tabb l�mnar."

#. #define FORM_LINK_TEXT_SUBMIT_UNM_MSG
#: LYMessages.c:94
msgid "UNMODIFIABLE form field.  Use UP or DOWN arrows or tab to move off."
msgstr "SKRIVSKYDDAT formul�rf�lt. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_TEXT_SUBMIT_MAILTO_MSG
#: LYMessages.c:96
msgid "(mailto form field) Enter text.  Use <return> to submit, arrows to move off."
msgstr "(e-postformul�rf�lt) Ange text. <Enter> skickar, pilar l�mnar."

#. #define FORM_LINK_TEXT_SUBMIT_MAILTO_DIS_MSG
#: LYMessages.c:98
msgid "(mailto form field) Mail is disallowed so you cannot submit."
msgstr "(e-postformul�rf�lt) E-post till�ts ej, s� du kan inte skicka."

#. #define FORM_LINK_PASSWORD_MESSAGE
#: LYMessages.c:100
msgid "(Password entry field) Enter text.  Use UP or DOWN arrows or tab to move off."
msgstr "(L�senordsf�lt) Ange text. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_PASSWORD_UNM_MSG
#: LYMessages.c:102
msgid "UNMODIFIABLE form password.  Use UP or DOWN arrows or tab to move off."
msgstr "SKRIVSKYDDAT formul�rl�senord. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_CHECKBOX_MESSAGE
#: LYMessages.c:104
msgid "(Checkbox Field)   Use right-arrow or <return> to toggle."
msgstr "(Kryssruta)   Anv�nd h�gerpil eller <Enter> f�r att st�lla om."

#. #define FORM_LINK_CHECKBOX_UNM_MSG
#: LYMessages.c:106
msgid "UNMODIFIABLE form checkbox.  Use UP or DOWN arrows or tab to move off."
msgstr "SKRIVSKYDDAD kryssruta. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_RADIO_MESSAGE
#: LYMessages.c:108
msgid "(Radio Button)   Use right-arrow or <return> to toggle."
msgstr "(Radioknapp)   Anv�nd h�gerpil eller <Enter> f�r att st�lla om."

#. #define FORM_LINK_RADIO_UNM_MSG
#: LYMessages.c:110
msgid "UNMODIFIABLE form radio button.  Use UP or DOWN arrows or tab to move off."
msgstr "SKRIVSKYDDAD radioknapp. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_SUBMIT_PREFIX
#: LYMessages.c:112
msgid "Submit ('x' for no cache) to "
msgstr "Skicka (\"x\" f�rbig�r cache) till "

#. #define FORM_LINK_RESUBMIT_PREFIX
#: LYMessages.c:114
msgid "Submit to "
msgstr "Skicka till "

#. #define FORM_LINK_SUBMIT_MESSAGE
#: LYMessages.c:116
msgid "(Form submit button) Use right-arrow or <return> to submit ('x' for no cache)."
msgstr "(S�ndknapp) Anv�nd h�gerpil eller <Enter> f�r att skicka (\"x\" f�rbig�r cache)."

#. #define FORM_LINK_RESUBMIT_MESSAGE
#: LYMessages.c:118
msgid "(Form submit button) Use right-arrow or <return> to submit."
msgstr "(S�ndknapp) Anv�nd h�gerpil eller <Enter> f�r att skicka."

#. #define FORM_LINK_SUBMIT_DIS_MSG
#: LYMessages.c:120
msgid "DISABLED form submit button.  Use UP or DOWN arrows or tab to move off."
msgstr "INAKTIV s�ndknapp. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_SUBMIT_MAILTO_PREFIX
#: LYMessages.c:122
msgid "Submit mailto form to "
msgstr "Skicka e-postformul�r till "

#. #define FORM_LINK_SUBMIT_MAILTO_MSG
#: LYMessages.c:124
msgid "(mailto form submit button) Use right-arrow or <return> to submit."
msgstr "(s�ndknapp i e-postformul�r) Anv�nd h�gerpil eller <Enter> f�r att skicka."

#. #define FORM_LINK_SUBMIT_MAILTO_DIS_MSG
#: LYMessages.c:126
msgid "(mailto form submit button) Mail is disallowed so you cannot submit."
msgstr "(s�ndknapp i e-postformul�r) E-post till�ts ej, s� du kan inte skicka."

#. #define FORM_LINK_RESET_MESSAGE
#: LYMessages.c:128
msgid "(Form reset button)   Use right-arrow or <return> to reset form to defaults."
msgstr "(Nollst�llningsknapp) Anv�nd h�gerpil eller <Enter> f�r att �terst�lla f�rval."

#. #define FORM_LINK_RESET_DIS_MSG
#: LYMessages.c:130
msgid "DISABLED form reset button.  Use UP or DOWN arrows or tab to move off."
msgstr "INAKTIV nollst�llningsknapp. Anv�nd UPP-/NED-pil eller tabb f�r att l�mna."

#. #define FORM_LINK_OPTION_LIST_MESSAGE
#: LYMessages.c:132
msgid "(Option list) Hit return and use arrow keys and return to select option."
msgstr "(Alternativlista) Tryck Enter och anv�nd pilar och Enter f�r att v�lja."

#. #define CHOICE_LIST_MESSAGE
#: LYMessages.c:134
msgid "(Choice list) Hit return and use arrow keys and return to select option."
msgstr "(Vallista) Tryck Enter och anv�nd piltangenter och Enter f�r att v�lja."

#. #define FORM_LINK_OPTION_LIST_UNM_MSG
#: LYMessages.c:136
msgid "UNMODIFIABLE option list.  Use return or arrow keys to review or leave."
msgstr "SKRIVSKYDDAD alternativlista. Anv�nd Enter och pilar f�r att visa eller l�mna."

#. #define CHOICE_LIST_UNM_MSG
#: LYMessages.c:138
msgid "UNMODIFIABLE choice list.  Use return or arrow keys to review or leave."
msgstr "SKRIVSKYDDAD vallista. Anv�nd Enter och piltangenter f�r att visa eller l�mna."

#: LYMessages.c:139
msgid "Submitting form..."
msgstr "Skickar formul�r..."

#: LYMessages.c:140
msgid "Resetting form..."
msgstr "Nollst�ller formul�r..."

#. #define RELOADING_FORM
#: LYMessages.c:142
msgid "Reloading document.  Any form entries will be lost!"
msgstr "H�mtar om dokument. Eventuellt formul�rinneh�ll f�rkastas!"

#: LYMessages.c:143
#, c-format
msgid "Warning: Cannot transcode form data to charset %s!"
msgstr "Varning: Kan inte koda formul�rdata i teckenupps�ttningen %s!"

#. #define NORMAL_LINK_MESSAGE
#: LYMessages.c:146
msgid "(NORMAL LINK)   Use right-arrow or <return> to activate."
msgstr "(VANLIG L�NK)   Anv�nd h�gerpil eller <Enter> f�r att aktivera."

#: LYMessages.c:147
msgid "The resource requested is not available at this time."
msgstr "Resursen du beg�rt �r inte tillg�nglig just nu."

#: LYMessages.c:148
msgid "Enter Lynx keystroke command: "
msgstr "Ange Lynxtangentkommando: "

#: LYMessages.c:149
msgid "Looking up "
msgstr "Sl�r upp "

#: LYMessages.c:150
#, c-format
msgid "Getting %s"
msgstr "H�mtar %s"

#: LYMessages.c:151
#, c-format
msgid "Skipping %s"
msgstr "Hoppas �ver %s"

#: LYMessages.c:152
#, c-format
msgid "Using %s"
msgstr "Anv�nder %s"

#: LYMessages.c:153
#, c-format
msgid "Illegal URL: %s"
msgstr "Felaktig adress: %s"

#: LYMessages.c:154
#, c-format
msgid "Badly formed address %s"
msgstr "Trasig adress %s"

#: LYMessages.c:155
#, c-format
msgid "URL: %s"
msgstr "Adress: %s"

#: LYMessages.c:156
msgid "Unable to access WWW file!!!"
msgstr "Kan inte komma �t webbfil!!!"

#: LYMessages.c:157
#, c-format
msgid "This is a searchable index.  Use %s to search."
msgstr "Detta �r ett s�kbart index. Anv�nd %s f�r att s�ka."

#. #define WWW_INDEX_MORE_MESSAGE
#: LYMessages.c:159
#, c-format
msgid "--More--  This is a searchable index.  Use %s to search."
msgstr "--Mer--  Detta �r ett s�kbart index. Anv�nd %s f�r att s�ka."

#: LYMessages.c:160
msgid "You have entered an invalid link number."
msgstr "Du har angett ett felaktigt l�nknummer."

#. #define SOURCE_HELP
#: LYMessages.c:162
msgid "Currently viewing document source.  Press '\\' to return to rendered version."
msgstr "Visar dokumentk�llkod. Tryck \"\\\" f�r att �terg� till tolkad version."

#. #define NOVICE_LINE_ONE
#: LYMessages.c:164
msgid "  Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.  \n"
msgstr "  Piltangenter: Upp och ned flyttar. H�ger f�ljer l�nk; v�nster �terg�r.  \n"

#. #define NOVICE_LINE_TWO
#: LYMessages.c:166
msgid " H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list \n"
msgstr " H=Hj�lp O=Val P=Utskrift G=G� M=Huvudsk�rm Q=Avsluta /=s�k Del=Historik \n"

#. #define NOVICE_LINE_TWO_A
#: LYMessages.c:168
msgid "  O)ther cmds  H)elp  K)eymap  G)oto  P)rint  M)ain screen  o)ptions  Q)uit  \n"
msgstr "  O=Fler H=Hj�lp K=Tangenter G=G� P=Utskrift M=Huvudsk�rm O=Val Q=Avsluta \n"

#. #define NOVICE_LINE_TWO_B
#: LYMessages.c:170
msgid "  O)ther cmds  B)ack  E)dit  D)ownload ^R)eload ^W)ipe screen  search doc: / \n"
msgstr "  O=Fler B=Bak�t E=Redigera D=H�mta ^R=H�mta om ^W=Rita om  s�k dokument: / \n"

#. #define NOVICE_LINE_TWO_C
#: LYMessages.c:172
msgid "O)ther cmds  C)omment  History: <backspace>  Bookmarks: V)iew, A)dd, R)emove \n"
msgstr "O=Fler  C=Kommentera  Historik: backsteg  Bokm�rken: V=Visa A=Nytt R=Ta bort \n"

#. #define FORM_NOVICELINE_ONE
#: LYMessages.c:174
msgid "            Enter text into the field by typing on the keyboard              "
msgstr "           Ange text i f�ltet genom att skriva p� tangentbordet              "

#. #define FORM_NOVICELINE_TWO
#: LYMessages.c:176
msgid "    Ctrl-U to delete all text in field, [Backspace] to delete a character    "
msgstr "        Ctrl-U t�mmer inmatningsf�ltet, [Backsteg] tar bort en bokstav       "

#. #define FORM_NOVICELINE_TWO_DELBL
#: LYMessages.c:178
msgid "      Ctrl-U to delete text in field, [Backspace] to delete a character    "
msgstr "        Ctrl-U t�mmer inmatningsf�ltet, [Backsteg] tar bort en bokstav     "

#. #define FORM_NOVICELINE_TWO_VAR
#: LYMessages.c:180
#, c-format
msgid "    %s to delete all text in field, [Backspace] to delete a character    "
msgstr "       %s t�mmer inmatningsf�ltet, [Backsteg] tar bort en bokstav        "

#. #define FORM_NOVICELINE_TWO_DELBL_VAR
#: LYMessages.c:182
#, c-format
msgid "      %s to delete text in field, [Backspace] to delete a character    "
msgstr "       %s t�mmer inmatningsf�ltet, [Backsteg] tar bort en bokstav      "

#. mailto
#: LYMessages.c:185
msgid "Malformed mailto form submission!  Cancelled!"
msgstr "Trasig \"mailto\" i formul�r! Avbryter!"

#: LYMessages.c:186
msgid "Warning!  Control codes in mail address replaced by ?"
msgstr "Varning!  Kontrollkoder i e-postadress ersatta med fr�getecken"

#: LYMessages.c:187
msgid "Mail disallowed!  Cannot submit."
msgstr "E-post till�ts ej! Kan inte skicka."

#: LYMessages.c:188
msgid "Mailto form submission failed!"
msgstr "Misslyckades att skicka e-postformul�r!"

#: LYMessages.c:189
msgid "Mailto form submission Cancelled!!!"
msgstr "Ins�ndning av e-postformul�r avbruten!!!"

#: LYMessages.c:190
msgid "Sending form content..."
msgstr "Skickar formul�rdata..."

#: LYMessages.c:191
msgid "No email address is present in mailto URL!"
msgstr "Ingen e-postadress i \"mailto\"-f�ltet!"

#. #define MAILTO_URL_TEMPOPEN_FAILED
#: LYMessages.c:193
msgid "Unable to open temporary file for mailto URL!"
msgstr "Kan inte �ppna tempor�rfil f�r \"mailto\"-adress!"

#. #define INC_ORIG_MSG_PROMPT
#: LYMessages.c:195
msgid "Do you wish to include the original message?"
msgstr "Vill du inkludera originalmeddelandet?"

#. #define INC_PREPARSED_MSG_PROMPT
#: LYMessages.c:197
msgid <style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="c1">//: Labels are defined by ending names with a &#39;:&#39;. This layer will compute</span>
<span class="c1">//: displacements for labels, and compute the offset for instructions using them.</span>
<span class="c1">//:</span>
<span class="c1">//: We won&#39;t check this, but our convention will be that jump targets will</span>
<span class="c1">//: start with a &#39;$&#39;, while functions will not. Function names will never be</span>
<span class="c1">//: jumped to, and jump targets will never be called.</span>

<span class="c1">//: We&#39;re introducing non-number names for the first time, so it&#39;s worth</span>
<span class="c1">//: laying down some ground rules all transforms will follow, so things don&#39;t</span>
<span class="c1">//: get too confusing:</span>
<span class="c1">//:   - if it starts with a digit, it&#39;s treated as a number. If it can&#39;t be</span>
<span class="c1">//:     parsed as hex it will raise an error.</span>
<span class="c1">//:   - if it starts with &#39;-&#39; it&#39;s treated as a number.</span>
<span class="c1">//:   - if it starts with &#39;0x&#39; it&#39;s treated as a number.</span>
<span class="c1">//:   - if it&#39;s two characters long, it can&#39;t be a name. Either it&#39;s a hex</span>
<span class="c1">//:     byte, or it raises an error.</span>
<span class="c1">//: That&#39;s it. Names can start with any non-digit that isn&#39;t a dash. They can</span>
<span class="c1">//: be a single character long. &#39;a&#39; is not a hex number, it&#39;s a variable.</span>
<span class="c1">//: Later layers may add more conventions partitioning the space of names. But</span>
<span class="c1">//: the above rules will remain inviolate.</span>

<span class="c1">//: One special label is &#39;Entry&#39;, the address to start running the program at.</span>
<span class="c1">//: It can be non-unique; the last declaration overrides earlier ones.</span>
<span class="c1">//: It must exist in a program. Otherwise we don&#39;t know where to start running</span>
<span class="c1">//: programs.</span>

<span class="kt">void</span><span class="w"> </span><span class="nf">test_Entry_label</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">run</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;05 0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;Entry:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;05 0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;run: 0x00000006 opcode: 05</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_DOESNT_CONTAIN</span><span class="p">(</span><span class="s">&quot;run: 0x00000001 opcode: 05&quot;</span><span class="p">);</span>
<span class="p">}</span>

<span class="o">:</span><span class="p">(</span><span class="n">before</span><span class="w"> </span><span class="s">&quot;End looks_like_hex_int(s) Detectors&quot;</span><span class="p">)</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">SIZE</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>

<span class="o">:</span><span class="p">(</span><span class="n">code</span><span class="p">)</span>
<span class="kt">void</span><span class="w"> </span><span class="n">test_pack_immediate_ignores_single_byte_nondigit_argument</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;b9/copy  a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: packing instruction &#39;b9/copy a/imm32&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// no change (we&#39;re just not printing metadata to the trace)</span>
<span class="w">      </span><span class="s">&quot;transform: instruction after packing: &#39;b9 a&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_pack_immediate_ignores_3_hex_digit_argument</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;b9/copy  aaa/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: packing instruction &#39;b9/copy aaa/imm32&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// no change (we&#39;re just not printing metadata to the trace)</span>
<span class="w">      </span><span class="s">&quot;transform: instruction after packing: &#39;b9 aaa&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_pack_immediate_ignores_non_hex_argument</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;b9/copy xxx/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: packing instruction &#39;b9/copy xxx/imm32&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// no change (we&#39;re just not printing metadata to the trace)</span>
<span class="w">      </span><span class="s">&quot;transform: instruction after packing: &#39;b9 xxx&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">//: a helper we&#39;ll find handy later</span>
<span class="kt">void</span><span class="w"> </span><span class="n">check_valid_name</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">string</span><span class="o">&amp;</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;empty name!</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">    </span><span class="k">return</span><span class="p">;</span>
<span class="w">  </span><span class="p">}</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sc">&#39;-&#39;</span><span class="p">)</span>
<span class="w">    </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39; starts with &#39;-&#39;, which can be confused with a negative number; use a different name</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s">&quot;0x&quot;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39; looks like a hex number; use a different name</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">    </span><span class="k">return</span><span class="p">;</span>
<span class="w">  </span><span class="p">}</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">isdigit</span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">)))</span>
<span class="w">    </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39; starts with a digit, and so can be confused with a number; use a different name.</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">SIZE</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span>
<span class="w">    </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39; is two characters long, which can look like raw hex bytes at a glance; use a different name</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="p">}</span>

<span class="c1">//: Now that that&#39;s done, let&#39;s start using names as labels.</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_map_label</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;loop:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;  05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: label &#39;loop&#39; is at address 1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="o">:</span><span class="p">(</span><span class="n">before</span><span class="w"> </span><span class="s">&quot;End Transforms&quot;</span><span class="p">)</span>
<span class="n">Transform</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">rewrite_labels</span><span class="p">);</span>
<span class="o">:</span><span class="p">(</span><span class="n">code</span><span class="p">)</span>
<span class="kt">void</span><span class="w"> </span><span class="n">rewrite_labels</span><span class="p">(</span><span class="n">program</span><span class="o">&amp;</span><span class="w"> </span><span class="n">p</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">trace</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;transform&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;-- rewrite labels&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">segments</span><span class="p">.</span><span class="n">empty</span><span class="p">())</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w">  </span><span class="n">segment</span><span class="o">&amp;</span><span class="w"> </span><span class="n">code</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">*</span><span class="n">find</span><span class="p">(</span><span class="n">p</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;code&quot;</span><span class="p">);</span>
<span class="w">  </span><span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span><span class="w"> </span><span class="kt">int32_t</span><span class="o">&gt;</span><span class="w"> </span><span class="n">byte_index</span><span class="p">;</span><span class="w">  </span><span class="c1">// values are unsigned, but we&#39;re going to do subtractions on them so they need to fit in 31 bits</span>
<span class="w">  </span><span class="n">compute_byte_indices_for_labels</span><span class="p">(</span><span class="n">code</span><span class="p">,</span><span class="w"> </span><span class="n">byte_index</span><span class="p">);</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">trace_contains_errors</span><span class="p">())</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w">  </span><span class="n">drop_labels</span><span class="p">(</span><span class="n">code</span><span class="p">);</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">trace_contains_errors</span><span class="p">())</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w">  </span><span class="n">replace_labels_with_displacements</span><span class="p">(</span><span class="n">code</span><span class="p">,</span><span class="w"> </span><span class="n">byte_index</span><span class="p">);</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">contains_key</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Entry&quot;</span><span class="p">))</span>
<span class="w">    </span><span class="n">p</span><span class="p">.</span><span class="n">entry</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code</span><span class="p">.</span><span class="n">start</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">get</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Entry&quot;</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">compute_byte_indices_for_labels</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">segment</span><span class="o">&amp;</span><span class="w"> </span><span class="n">code</span><span class="p">,</span><span class="w"> </span><span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span><span class="w"> </span><span class="kt">int32_t</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">byte_index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="kt">int</span><span class="w"> </span><span class="n">current_byte</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">  </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w">  </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">SIZE</span><span class="p">(</span><span class="n">code</span><span class="p">.</span><span class="n">lines</span><span class="p">);</span><span class="w">  </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="k">const</span><span class="w"> </span><span class="n">line</span><span class="o">&amp;</span><span class="w"> </span><span class="n">inst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code</span><span class="p">.</span><span class="n">lines</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">Source_lines_file</span><span class="p">.</span><span class="n">is_open</span><span class="p">()</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="o">!</span><span class="n">inst</span><span class="p">.</span><span class="n">original</span><span class="p">.</span><span class="n">empty</span><span class="p">()</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="cm">/*not a label*/</span><span class="w"> </span><span class="o">*</span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="n">data</span><span class="p">.</span><span class="n">rbegin</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="sc">&#39;:&#39;</span><span class="p">)</span>
<span class="w">      </span><span class="n">Source_lines_file</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;0x&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">HEXWORD</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="p">.</span><span class="n">start</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">current_byte</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39; &#39;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">original</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</span><span class="p">;</span>
<span class="w">    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w">  </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">SIZE</span><span class="p">(</span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">);</span><span class="w">  </span><span class="o">++</span><span class="n">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">      </span><span class="k">const</span><span class="w"> </span><span class="n">word</span><span class="o">&amp;</span><span class="w"> </span><span class="n">curr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
<span class="w">      </span><span class="c1">// hack: if we have any argument metadata left after previous transforms,</span>
<span class="w">      </span><span class="c1">// deduce its size</span>
<span class="w">      </span><span class="c1">// Maybe we should just move this transform to before instruction</span>
<span class="w">      </span><span class="c1">// packing, and deduce the size of *all* arguments. But then we&#39;ll also</span>
<span class="w">      </span><span class="c1">// have to deal with bitfields.</span>
<span class="w">      </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;disp32&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;imm32&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">rbegin</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sc">&#39;:&#39;</span><span class="p">)</span>
<span class="w">          </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;: don&#39;t use &#39;:&#39; when jumping to labels</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">        </span><span class="n">current_byte</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">4</span><span class="p">;</span>
<span class="w">      </span><span class="p">}</span>
<span class="w">      </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;disp16&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">rbegin</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sc">&#39;:&#39;</span><span class="p">)</span>
<span class="w">          </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;: don&#39;t use &#39;:&#39; when jumping to labels</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">        </span><span class="n">current_byte</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
<span class="w">      </span><span class="p">}</span>
<span class="w">      </span><span class="c1">// automatically handle /disp8 and /imm8 here</span>
<span class="w">      </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">rbegin</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="sc">&#39;:&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="o">++</span><span class="n">current_byte</span><span class="p">;</span>
<span class="w">      </span><span class="p">}</span>
<span class="w">      </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="n">string</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">drop_last</span><span class="p">(</span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">);</span>
<span class="w">        </span><span class="c1">// ensure labels look sufficiently different from raw hex</span>
<span class="w">        </span><span class="n">check_valid_name</span><span class="p">(</span><span class="n">label</span><span class="p">);</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">trace_contains_errors</span><span class="p">())</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">contains_any_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">))</span>
<span class="w">          </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;: label definition (&#39;:&#39;) not allowed in argument</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="w">          </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;: labels can only be the first word in a line.</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">Labels_file</span><span class="p">.</span><span class="n">is_open</span><span class="p">())</span>
<span class="w">          </span><span class="n">Labels_file</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;0x&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">HEXWORD</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="p">.</span><span class="n">start</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">current_byte</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39; &#39;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;\n&#39;</span><span class="p">;</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">contains_key</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="n">label</span><span class="p">)</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s">&quot;Entry&quot;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">          </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;duplicate label &#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">          </span><span class="k">return</span><span class="p">;</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">        </span><span class="n">put</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="n">label</span><span class="p">,</span><span class="w"> </span><span class="n">current_byte</span><span class="p">);</span>
<span class="w">        </span><span class="n">trace</span><span class="p">(</span><span class="mi">99</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;transform&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;label &#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">label</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39; is at address &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="p">(</span><span class="n">current_byte</span><span class="o">+</span><span class="n">code</span><span class="p">.</span><span class="n">start</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">        </span><span class="c1">// no modifying current_byte; label definitions won&#39;t be in the final binary</span>
<span class="w">      </span><span class="p">}</span>
<span class="w">    </span><span class="p">}</span>
<span class="w">  </span><span class="p">}</span>
<span class="p">}</span>

<span class="o">:</span><span class="p">(</span><span class="n">before</span><span class="w"> </span><span class="s">&quot;End Globals&quot;</span><span class="p">)</span>
<span class="kt">bool</span><span class="w"> </span><span class="n">Dump_debug_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span><span class="w">  </span><span class="c1">// currently used only by &#39;bootstrap translate&#39;</span>
<span class="n">ofstream</span><span class="w"> </span><span class="n">Labels_file</span><span class="p">;</span>
<span class="n">ofstream</span><span class="w"> </span><span class="n">Source_lines_file</span><span class="p">;</span>
<span class="o">:</span><span class="p">(</span><span class="n">before</span><span class="w"> </span><span class="s">&quot;End Commandline Options&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">is_equal</span><span class="p">(</span><span class="o">*</span><span class="n">arg</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;--debug&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Dump_debug_info</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="c1">// End --debug Settings</span>
<span class="p">}</span>
<span class="c1">//: wait to open &quot;labels&quot; for writing until we&#39;re sure we aren&#39;t trying to read it</span>
<span class="o">:</span><span class="p">(</span><span class="n">after</span><span class="w"> </span><span class="s">&quot;Begin bootstrap translate&quot;</span><span class="p">)</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">Dump_debug_info</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">cerr</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;saving address-&gt;label information to &#39;labels&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
<span class="w">  </span><span class="n">Labels_file</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="s">&quot;labels&quot;</span><span class="p">);</span>
<span class="w">  </span><span class="n">cerr</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;saving address-&gt;source information to &#39;source_lines&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
<span class="w">  </span><span class="n">Source_lines_file</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="s">&quot;source_lines&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="o">:</span><span class="p">(</span><span class="n">before</span><span class="w"> </span><span class="s">&quot;End bootstrap translate&quot;</span><span class="p">)</span>
<span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">Dump_debug_info</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Labels_file</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<span class="w">  </span><span class="n">Source_lines_file</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<span class="p">}</span>

<span class="o">:</span><span class="p">(</span><span class="n">code</span><span class="p">)</span>
<span class="kt">void</span><span class="w"> </span><span class="n">drop_labels</span><span class="p">(</span><span class="n">segment</span><span class="o">&amp;</span><span class="w"> </span><span class="n">code</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w">  </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">SIZE</span><span class="p">(</span><span class="n">code</span><span class="p">.</span><span class="n">lines</span><span class="p">);</span><span class="w">  </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="n">line</span><span class="o">&amp;</span><span class="w"> </span><span class="n">inst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code</span><span class="p">.</span><span class="n">lines</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<span class="w">    </span><span class="n">vector</span><span class="o">&lt;</span><span class="n">word</span><span class="o">&gt;::</span><span class="n">iterator</span><span class="w"> </span><span class="n">new_end</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">remove_if</span><span class="p">(</span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span><span class="w"> </span><span class="n">is_label</span><span class="p">);</span>
<span class="w">    </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">new_end</span><span class="p">,</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
<span class="w">  </span><span class="p">}</span>
<span class="p">}</span>

<span class="kt">bool</span><span class="w"> </span><span class="n">is_label</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">word</span><span class="o">&amp;</span><span class="w"> </span><span class="n">w</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="k">return</span><span class="w"> </span><span class="o">*</span><span class="n">w</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">rbegin</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sc">&#39;:&#39;</span><span class="p">;</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">replace_labels_with_displacements</span><span class="p">(</span><span class="n">segment</span><span class="o">&amp;</span><span class="w"> </span><span class="n">code</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">map</span><span class="o">&lt;</span><span class="n">string</span><span class="p">,</span><span class="w"> </span><span class="kt">int32_t</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">byte_index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="kt">int32_t</span><span class="w"> </span><span class="n">byte_index_next_instruction_starts_at</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="w">  </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w">  </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">SIZE</span><span class="p">(</span><span class="n">code</span><span class="p">.</span><span class="n">lines</span><span class="p">);</span><span class="w">  </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="n">line</span><span class="o">&amp;</span><span class="w"> </span><span class="n">inst</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code</span><span class="p">.</span><span class="n">lines</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<span class="w">    </span><span class="n">byte_index_next_instruction_starts_at</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">num_bytes</span><span class="p">(</span><span class="n">inst</span><span class="p">);</span>
<span class="w">    </span><span class="n">line</span><span class="w"> </span><span class="n">new_inst</span><span class="p">;</span>
<span class="w">    </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w">  </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">SIZE</span><span class="p">(</span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">);</span><span class="w">  </span><span class="o">++</span><span class="n">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">      </span><span class="k">const</span><span class="w"> </span><span class="n">word</span><span class="o">&amp;</span><span class="w"> </span><span class="n">curr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
<span class="w">      </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">contains_key</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="kt">int32_t</span><span class="w"> </span><span class="n">displacement</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">static_cast</span><span class="o">&lt;</span><span class="kt">int32_t</span><span class="o">&gt;</span><span class="p">(</span><span class="n">get</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">))</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">byte_index_next_instruction_starts_at</span><span class="p">;</span>
<span class="w">        </span><span class="kt">int32_t</span><span class="w"> </span><span class="n">absolute_address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code</span><span class="p">.</span><span class="n">start</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">get</span><span class="p">(</span><span class="n">byte_index</span><span class="p">,</span><span class="w"> </span><span class="n">curr</span><span class="p">.</span><span class="n">data</span><span class="p">);</span>
<span class="w">        </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;disp8&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">          </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">displacement</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mh">0x7f</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">displacement</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mh">-0x7f</span><span class="p">)</span>
<span class="w">            </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;: label too far away for displacement &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">hex</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">displacement</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; to fit in 8 signed bits</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">          </span><span class="k">else</span>
<span class="w">            </span><span class="n">emit_hex_bytes</span><span class="p">(</span><span class="n">new_inst</span><span class="p">,</span><span class="w"> </span><span class="n">displacement</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">        </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;disp16&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">          </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">displacement</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mh">0x7fff</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">displacement</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mh">-0x7fff</span><span class="p">)</span>
<span class="w">            </span><span class="n">raise</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;: label too far away for displacement &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">hex</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">displacement</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot; to fit in 16 signed bits</span><span class="se">\n</span><span class="s">&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">          </span><span class="k">else</span>
<span class="w">            </span><span class="n">emit_hex_bytes</span><span class="p">(</span><span class="n">new_inst</span><span class="p">,</span><span class="w"> </span><span class="n">displacement</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">        </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;disp32&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">          </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">is_far_jump_or_call</span><span class="p">(</span><span class="n">new_inst</span><span class="p">))</span>
<span class="w">            </span><span class="n">emit_hex_bytes</span><span class="p">(</span><span class="n">new_inst</span><span class="p">,</span><span class="w"> </span><span class="n">displacement</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
<span class="w">          </span><span class="k">else</span>
<span class="w">            </span><span class="n">emit_hex_bytes</span><span class="p">(</span><span class="n">new_inst</span><span class="p">,</span><span class="w"> </span><span class="n">absolute_address</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
<span class="w">        </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">has_argument_metadata</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;imm32&quot;</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">          </span><span class="n">emit_hex_bytes</span><span class="p">(</span><span class="n">new_inst</span><span class="p">,</span><span class="w"> </span><span class="n">absolute_address</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
<span class="w">        </span><span class="p">}</span>
<span class="w">      </span><span class="p">}</span>
<span class="w">      </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w">        </span><span class="n">new_inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">curr</span><span class="p">);</span>
<span class="w">      </span><span class="p">}</span>
<span class="w">    </span><span class="p">}</span>
<span class="w">    </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">swap</span><span class="p">(</span><span class="n">new_inst</span><span class="p">.</span><span class="n">words</span><span class="p">);</span>
<span class="w">    </span><span class="n">trace</span><span class="p">(</span><span class="mi">99</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;transform&quot;</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;instruction after transform: &#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">data_to_string</span><span class="p">(</span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;&#39;&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">end</span><span class="p">();</span>
<span class="w">  </span><span class="p">}</span>
<span class="p">}</span>

<span class="kt">bool</span><span class="w"> </span><span class="n">is_far_jump_or_call</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">line</span><span class="o">&amp;</span><span class="w"> </span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">string</span><span class="w"> </span><span class="n">first_opcode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="n">data</span><span class="p">;</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">first_opcode</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s">&quot;e8&quot;</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">first_opcode</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s">&quot;e9&quot;</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">SIZE</span><span class="p">(</span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="w">  </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">first_opcode</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s">&quot;0f&quot;</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span>
<span class="w">  </span><span class="n">string</span><span class="w"> </span><span class="n">second_opcode</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="n">data</span><span class="p">;</span>
<span class="w">  </span><span class="k">return</span><span class="w"> </span><span class="n">starts_with</span><span class="p">(</span><span class="n">second_opcode</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;8&quot;</span><span class="p">);</span>
<span class="p">}</span>

<span class="n">string</span><span class="w"> </span><span class="n">data_to_string</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">line</span><span class="o">&amp;</span><span class="w"> </span><span class="n">inst</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">ostringstream</span><span class="w"> </span><span class="n">out</span><span class="p">;</span>
<span class="w">  </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w">  </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">SIZE</span><span class="p">(</span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">);</span><span class="w">  </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="n">out</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39; &#39;</span><span class="p">;</span>
<span class="w">    </span><span class="n">out</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">inst</span><span class="p">.</span><span class="n">words</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">data</span><span class="p">;</span>
<span class="w">  </span><span class="p">}</span>
<span class="w">  </span><span class="k">return</span><span class="w"> </span><span class="n">out</span><span class="p">.</span><span class="n">str</span><span class="p">();</span>
<span class="p">}</span>

<span class="n">string</span><span class="w"> </span><span class="n">drop_last</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">string</span><span class="o">&amp;</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="k">return</span><span class="w"> </span><span class="n">string</span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="w"> </span><span class="o">--</span><span class="n">s</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
<span class="p">}</span>

<span class="c1">//: Label definitions must be the first word on a line. No jumping inside</span>
<span class="c1">//: instructions.</span>
<span class="c1">//: They should also be the only word on a line.</span>
<span class="c1">//: However, you can absolutely have multiple labels map to the same address,</span>
<span class="c1">//: as long as they&#39;re on separate lines.</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_multiple_labels_at</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// address 1</span>
<span class="w">      </span><span class="s">&quot;loop:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot; $loop2:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// address 1 (labels take up no space)</span>
<span class="w">      </span><span class="s">&quot;    05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// address 6</span>
<span class="w">      </span><span class="s">&quot;    eb  $loop2/disp8</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// address 8</span>
<span class="w">      </span><span class="s">&quot;    eb  $loop3/disp8</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// address 0xa</span>
<span class="w">      </span><span class="s">&quot; $loop3:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: label &#39;loop&#39; is at address 1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;transform: label &#39;$loop2&#39; is at address 1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;transform: label &#39;$loop3&#39; is at address a</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// first jump is to -7</span>
<span class="w">      </span><span class="s">&quot;transform: instruction after transform: &#39;eb f9&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="c1">// second jump is to 0 (fall through)</span>
<span class="w">      </span><span class="s">&quot;transform: instruction after transform: &#39;eb 00&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_loading_label_as_imm32</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;label:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;  be/copy-to-ESI  label/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: label &#39;label&#39; is at address 1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;transform: instruction after transform: &#39;be 01 00 00 00&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_duplicate_label</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;loop:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;loop:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;    05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;error: duplicate label &#39;loop&#39;</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_label_too_short</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;xz:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;  05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;error: &#39;xz&#39; is two characters long, which can look like raw hex bytes at a glance; use a different name</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_label_hex</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;0xab:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;  05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;error: &#39;0xab&#39; looks like a hex number; use a different name</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_label_negative_hex</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;-a:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;    05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;error: &#39;-a&#39; starts with &#39;-&#39;, which can be confused with a negative number; use a different name</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">//: As said up top, the &#39;Entry&#39; label is special.</span>
<span class="c1">//: It can be non-unique; the last declaration overrides earlier ones.</span>
<span class="c1">//: It must exist in a program. Otherwise we don&#39;t know where to start running</span>
<span class="c1">//: programs.</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_duplicate_Entry_label</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;Entry:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;Entry:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;    05  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_DOESNT_CONTAIN_ERRORS</span><span class="p">();</span>
<span class="p">}</span>

<span class="c1">// This test could do with some refactoring.</span>
<span class="c1">// We&#39;re duplicating the flow inside `bootstrap translate`, but without</span>
<span class="c1">// reading/writing files.</span>
<span class="c1">// We can&#39;t just use run(string) because most of our tests allow programs</span>
<span class="c1">// without &#39;Entry&#39; labels, as a convenience.</span>
<span class="kt">void</span><span class="w"> </span><span class="n">test_programs_without_Entry_label</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">Hide_errors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span>
<span class="w">  </span><span class="n">program</span><span class="w"> </span><span class="n">p</span><span class="p">;</span>
<span class="w">  </span><span class="n">istringstream</span><span class="w"> </span><span class="n">in</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x1</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;05 0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;05 0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">parse</span><span class="p">(</span><span class="n">in</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="p">);</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span><span class="n">p</span><span class="p">);</span>
<span class="w">  </span><span class="n">ostringstream</span><span class="w"> </span><span class="n">dummy</span><span class="p">;</span>
<span class="w">  </span><span class="n">save_elf</span><span class="p">(</span><span class="n">p</span><span class="p">,</span><span class="w"> </span><span class="n">dummy</span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;error: no &#39;Entry&#39; label found</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">//: now that we have labels, we need to adjust segment size computation to</span>
<span class="c1">//: ignore them.</span>

<span class="kt">void</span><span class="w"> </span><span class="n">test_segment_size_ignores_labels</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">  </span><span class="n">transform</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;== code 0x09000074</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;  05/add  0x0d0c0b0a/imm32</span><span class="se">\n</span><span class="s">&quot;</span><span class="w">  </span><span class="c1">// 5 bytes</span>
<span class="w">      </span><span class="s">&quot;foo:</span><span class="se">\n</span><span class="s">&quot;</span><span class="w">                        </span><span class="c1">// 0 bytes</span>
<span class="w">      </span><span class="s">&quot;== data 0x0a000000</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;bar:</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">      </span><span class="s">&quot;  00</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="w">  </span><span class="n">CHECK_TRACE_CONTENTS</span><span class="p">(</span>
<span class="w">      </span><span class="s">&quot;transform: segment 1 begins at address 0x0a000079</span><span class="se">\n</span><span class="s">&quot;</span>
<span class="w">  </span><span class="p">);</span>
<span class="p">}</span>

<span class="o">:</span><span class="p">(</span><span class="n">before</span><span class="w"> </span><span class="s">&quot;End size_of(word w) Special-cases&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">is_label</span><span class="p">(</span><span class="n">w</span><span class="p">))</span>
<span class="w">  </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.causal.agency/cgit-pink/about/'>cgit-pink 1.4.1-2-gfad0</a> (<a href='https://git-scm.com/'>git 2.36.2.497.gbbea4dcf42</a>) at 2025-04-11 12:19:43 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
em\n"
"     administrator."
msgstr ""
"     Du kan ta bort l�nkar med kommandot radera bokm�rke, vilket vanligtvis\n"
"     n�s via tangenten \"R\", men som kan ha �ndrats av dig eller din\n"
"     systemadministrat�r."

#: src/LYBookmark.c:378
msgid ""
"     This file also may be edited with a standard text editor to delete\n"
"     outdated or invalid links, or to change their order."
msgstr ""
"     Denna fil kan �ven redigeras med ett vanligt textredigeringsprogram f�r\n"
"     att ta bort f�r�ldrade eller ogiltiga l�nkar, eller �ndra den inb�rdes\n"
"     ordningen."

#: src/LYBookmark.c:381
msgid ""
"Note: if you edit this file manually\n"
"      you should not change the format within the lines\n"
"      or add other HTML markup.\n"
"      Make sure any bookmark link is saved as a single line."
msgstr ""
"Obs:  om du redigerar denna fil manuellt\n"
"      b�r du inte �ndra formatet p� raderna,\n"
"      eller l�gga till annan HTML-kod.\n"
"      Se till att alla bokm�rkesl�nkar lagras som enskilda rader."

#: src/LYBookmark.c:677
#, c-format
msgid "File may be recoverable from %s during this session"
msgstr "Filen kan kanske �terskapas fr�n %s under denna session"

#: src/LYCgi.c:159
#, c-format
msgid "Do you want to execute \"%s\"?"
msgstr ""

#.
#. * Neither the path as given nor any components examined by backing up
#. * were stat()able.  - kw
#.
#: src/LYCgi.c:274
msgid "Unable to access cgi script"
msgstr "Kan inte n� cgi-skript"

#: src/LYCgi.c:699 src/LYCgi.c:702
msgid "Good Advice"
msgstr "Gott r�d"

#: src/LYCgi.c:706
msgid "An excellent http server for VMS is available via"
msgstr "En utm�rkt http-server f�r VMS �r tillg�nglig via"

#: src/LYCgi.c:713
msgid "this link"
msgstr "denna l�nk"

#: src/LYCgi.c:717
msgid "It provides state of the art CGI script support.\n"
msgstr "Den ger f�rstklassigt st�d f�r CGI-skript.\n"

#: src/LYClean.c:120
msgid "Exiting via interrupt:"
msgstr "Avslutar via avbrott:"

#: src/LYCookie.c:2458
msgid "(from a previous session)"
msgstr "(fr�n en tidigare session)"

#: src/LYCookie.c:2519
msgid "Maximum Gobble Date:"
msgstr "Maximalt �tdatum:"

#: src/LYCookie.c:2559
msgid "Internal"
msgstr "Intern"

#: src/LYCookie.c:2560
msgid "cookie_domain_flag_set error, aborting program"
msgstr "\"cookie_domain_flag_set\"-fel, avbryter programmet"

#: src/LYCurses.c:1028
msgid "Terminal initialisation failed - unknown terminal type?"
msgstr "Terminalinitiering misslyckades - ok�nd terminaltyp?"

#: src/LYCurses.c:1453
msgid "Terminal ="
msgstr "Terminal ="

#: src/LYCurses.c:1457
msgid "You must use a vt100, 200, etc. terminal with this program."
msgstr "Du m�ste anv�nda en vt100-, -200-, etc. -terminal med detta program."

#: src/LYCurses.c:1506
msgid "Your Terminal type is unknown!"
msgstr "Din terminaltyp �r ok�nd!"

#: src/LYCurses.c:1507
msgid "Enter a terminal type:"
msgstr "Ange en terminaltyp:"

#: src/LYCurses.c:1521
msgid "TERMINAL TYPE IS SET TO"
msgstr "TERMINALTYP SATT TILL"

#: src/LYCurses.c:2025
#, c-format
msgid ""
"\n"
"A Fatal error has occurred in %s Ver. %s\n"
msgstr ""
"\n"
"Ett fatalt fel har uppst�tt i %s ver. %s\n"

#: src/LYCurses.c:2028
#, c-format
msgid ""
"\n"
"Please notify your system administrator to confirm a bug, and if\n"
"confirmed, to notify the lynx-dev list.  Bug reports should have concise\n"
"descriptions of the command and/or URL which causes the problem, the\n"
"operating system name with version number, the TCPIP implementation, the\n"
"TRACEBACK if it can be captured, and any other relevant information.\n"
msgstr ""
"\n"
"Kontakta din systemadministrat�r f�r att bekr�fta ett programfel, och om\n"
"det bekr�ftas, att notifiera lynx-dev-listan. Felrapporter b�r ha en\n"
"koncis beskrivning av kommandon och/eller webbadresser (URLar) som g�r att\n"
"felet uppst�r, namn och versionsnummer p� operativsystemet, anv�nd TCP/IP-\n"
"implementation, TRACEBACK om den kan f�s, och all annan relevant information.\n"

#: src/LYEdit.c:251
msgid "Editor killed by signal"
msgstr "Redigeringsprogram d�dat av signal"

#: src/LYEdit.c:253
#, c-format
msgid "Editor returned with error status, %s"
msgstr "Redigeringsprogrammet gav felstatus %s"

#: src/LYEdit.c:256
msgid "reason unknown."
msgstr "ok�nd anledning."

#: src/LYDownload.c:503
msgid "Downloaded link:"
msgstr "H�mtad l�nk:"

#: src/LYDownload.c:508
msgid "Suggested file name:"
msgstr "F�reslaget filnamn:"

#: src/LYDownload.c:513
msgid "Standard download options:"
msgstr "F�rdefinierade h�mtalternativ:"

#: src/LYDownload.c:514
msgid "Download options:"
msgstr "H�mtalternativ:"

#: src/LYDownload.c:530
msgid "Save to disk"
msgstr "Spara p� disk"

#: src/LYDownload.c:544
msgid "View temporary file"
msgstr "Visa tempor�r fil"

#: src/LYDownload.c:551
msgid "Save to disk disabled."
msgstr "\"Spara p� disk\" deaktiverad."

#: src/LYDownload.c:555 src/LYPrint.c:1319
msgid "Local additions:"
msgstr "Lokala till�gg:"

#: src/LYDownload.c:566 src/LYUpload.c:211
#, c-format
msgid "No Name Given"
msgstr "Inget namn har angetts"

#: src/LYHistory.c:660
msgid "You selected:"
msgstr "Du valde:"

#: src/LYHistory.c:684 src/LYHistory.c:913
msgid "(no address)"
msgstr "(ingen adress)"

#: src/LYHistory.c:688
msgid " (internal)"
msgstr " (intern)"

#: src/LYHistory.c:690
msgid " (was internal)"
msgstr " (var intern)"

#: src/LYHistory.c:788
msgid " (From History)"
msgstr " (Fr�n historik)"

#: src/LYHistory.c:833
msgid "You visited (POSTs, bookmark, menu and list files excluded):"
msgstr "Du bes�kte (POST, bokm�rkes-, meny- och listfiler ej medr�knade):"

#: src/LYHistory.c:1123
msgid "(No messages yet)"
msgstr "(Inga meddelanden �nnu)"

#: src/LYLeaks.c:206
msgid "Invalid pointer detected."
msgstr "Ogiltig pekare uppt�ckt."

#: src/LYLeaks.c:208 src/LYLeaks.c:246
msgid "Sequence:"
msgstr "Sekvens:"

#: src/LYLeaks.c:211 src/LYLeaks.c:249
msgid "Pointer:"
msgstr "Pekare:"

#: src/LYLeaks.c:220 src/LYLeaks.c:227 src/LYLeaks.c:268
msgid "FileName:"
msgstr "Filnamn:"

#: src/LYLeaks.c:223 src/LYLeaks.c:230 src/LYLeaks.c:271 src/LYLeaks.c:282
msgid "LineCount:"
msgstr "Radnummer:"

#: src/LYLeaks.c:244
msgid "Memory leak detected."
msgstr "Minnesl�cka uppt�ckt."

#: src/LYLeaks.c:252
msgid "Contains:"
msgstr "Inneh�ller:"

#: src/LYLeaks.c:265
msgid "ByteSize:"
msgstr "Bytestorlek:"

#: src/LYLeaks.c:279
msgid "realloced:"
msgstr "omallokerad:"

#: src/LYLeaks.c:300
msgid "Total memory leakage this run:"
msgstr "Totalt minnesl�ckage denna k�rning:"

#: src/LYLeaks.c:303
msgid "Peak allocation"
msgstr "Mesta allokering"

#: src/LYLeaks.c:304
msgid "Bytes allocated"
msgstr "Byte allokerade"

#: src/LYLeaks.c:305
msgid "Total mallocs"
msgstr "Totalt antal malloc"

#: src/LYLeaks.c:306
msgid "Total frees"
msgstr "Totalt antal free"

#: src/LYList.c:84
msgid "References in "
msgstr "Referenser i "

#: src/LYList.c:87
msgid "this document:"
msgstr "detta dokument:"

#: src/LYList.c:93
msgid "Visible links:"
msgstr "Bes�kta l�nkar:"

#: src/LYList.c:194 src/LYList.c:293
msgid "Hidden links:"
msgstr "Dolda l�nkar:"

#: src/LYList.c:326
msgid "References"
msgstr "Referenser"

#: src/LYList.c:330
msgid "Visible links"
msgstr "Synliga l�nkar"

#: src/LYLocal.c:269
#, c-format
msgid "Unable to get status of '%s'."
msgstr "Kan inte ta status p� \"%s\"."

#: src/LYLocal.c:303
msgid "The selected item is not a file or a directory!  Request ignored."
msgstr "Vald post �r inte en fil eller en katalog! Beg�ran ignoreras."

#: src/LYLocal.c:371
#, c-format
msgid "Unable to %s due to system error!"
msgstr "Kan inte %s p� grund av systemfel!"

#: src/LYLocal.c:405
#, c-format
msgid "Probable failure to %s due to system error!"
msgstr "M�jligt misslyckande i %s p� grund av systemfel!"

#: src/LYLocal.c:467 src/LYLocal.c:488
#, c-format
msgid "remove %s"
msgstr "ta bort %s"

#: src/LYLocal.c:506
#, c-format
msgid "touch %s"
msgstr "�ndra datum p� %s"

#: src/LYLocal.c:534
#, c-format
msgid "move %s to %s"
msgstr "flytta %s till %s"

#: src/LYLocal.c:575
msgid "There is already a directory with that name!  Request ignored."
msgstr "Det finns redan en katalog med det namnet! Beg�ran ignoreras."

#: src/LYLocal.c:577
msgid "There is already a file with that name!  Request ignored."
msgstr "Det finns redan en fil med det namnet! Beg�ran ignoreras."

#: src/LYLocal.c:579
msgid "The specified name is already in use!  Request ignored."
msgstr "Angivet filnamn anv�nds redan! Beg�ran ignoreras."

#: src/LYLocal.c:590
msgid "Destination has different owner!  Request denied."
msgstr "M�let har annan �gare! Beg�ran avvisas."

#: src/LYLocal.c:593
msgid "Destination is not a valid directory!  Request denied."
msgstr "M�let �r inte en giltig katalog! Beg�ran avvisas."

#: src/LYLocal.c:615
msgid "Remove all tagged files and directories?"
msgstr "Ta bort alla markerade filer och kataloger?"

#: src/LYLocal.c:673
msgid "Enter new location for tagged items: "
msgstr "Ange ny plats f�r markerade poster: "

#: src/LYLocal.c:743
msgid "Path too long"
msgstr "S�kv�g f�r l�ng"

#: src/LYLocal.c:774
msgid "Source and destination are the same location - request ignored!"
msgstr "K�lla och m�l �r samma - beg�ran ignoreras!"

#: src/LYLocal.c:831
msgid "Enter new name for directory: "
msgstr "Ange nytt namn f�r katalog: "

#: src/LYLocal.c:833
msgid "Enter new name for file: "
msgstr "Ange nytt namn f�r fil: "

#: src/LYLocal.c:845
msgid "Illegal character (path-separator) found! Request ignored."
msgstr "Felaktigt tecken (s�kv�gsavdelare) funnen! Beg�ran ignorerad."

#: src/LYLocal.c:895
msgid "Enter new location for directory: "
msgstr "Ange ny plats f�r katalog: "

#: src/LYLocal.c:901
msgid "Enter new location for file: "
msgstr "Ange ny plats f�r fil: "

#: src/LYLocal.c:928
msgid "Unexpected failure - unable to find trailing path separator"
msgstr "Ov�ntat misslyckande - kan inte hitta avslutande s�kv�gsavdelare"

#: src/LYLocal.c:948
msgid "Source and destination are the same location!  Request ignored!"
msgstr "K�lla och m�l �r samma plats! Beg�ran ignorerad."

#: src/LYLocal.c:995
msgid "Modify name, location, or permission (n, l, or p): "
msgstr "�nda N=namn, L=plats eller P=beh�righet? "

#: src/LYLocal.c:997
msgid "Modify name or location (n or l): "
msgstr "�ndra N=namn eller L=plats? "

#.
#. * Code for changing ownership needed here.
#.
#: src/LYLocal.c:1026
msgid "This feature not yet implemented!"
msgstr "Denna funktion �r �nnu ej implementerad!"

#: src/LYLocal.c:1043
msgid "Enter name of file to create: "
msgstr "Ange namn p� fil att skapa: "

#: src/LYLocal.c:1051 src/LYLocal.c:1092
msgid "Illegal redirection \"//\" found! Request ignored."
msgstr "Felaktig omdirigering \"//\" funnen! Beg�ran ignoreras."

#: src/LYLocal.c:1084
msgid "Enter name for new directory: "
msgstr "Ange namn p� ny katalog: "

#: src/LYLocal.c:1128
msgid "Create file or directory (f or d): "
msgstr "Skapa F=fil eller D=katalog? "

#: src/LYLocal.c:1170
#, c-format
msgid "Remove directory '%s'?"
msgstr "Ta bort katalogen \"%s\"?"

#: src/LYLocal.c:1173
msgid "Remove directory?"
msgstr "Ta bort katalogen?"

#: src/LYLocal.c:1178
#, c-format
msgid "Remove file '%s'?"
msgstr "Ta bort fil \"%s\"?"

#: src/LYLocal.c:1180
msgid "Remove file?"
msgstr "Ta bort fil?"

#: src/LYLocal.c:1185
#, c-format
msgid "Remove symbolic link '%s'?"
msgstr "Ta bort symbolisk l�nk \"%s\"?"

#: src/LYLocal.c:1187
msgid "Remove symbolic link?"
msgstr "Ta bort symbolisk l�nk?"

#: src/LYLocal.c:1282
msgid "Sorry, don't know how to permit non-UNIX files yet."
msgstr "Tyv�rr, kan inte �ndra beh�righet f�r icke-Unixfiler �nnu."

#: src/LYLocal.c:1312
msgid "Unable to open permit options file"
msgstr "Kan inte �ppna beh�righetsalternativfil"

#: src/LYLocal.c:1342
msgid "Specify permissions below:"
msgstr "Ange beh�righet nedan:"

#: src/LYLocal.c:1343 src/LYShowInfo.c:259
msgid "Owner:"
msgstr "�gare:"

#: src/LYLocal.c:1359
msgid "Group"
msgstr "Grupp"

#: src/LYLocal.c:1375
msgid "Others:"
msgstr "�vriga:"

#: src/LYLocal.c:1393
msgid "form to permit"
msgstr "formul�r f�r att �ndra beh�righet f�r"

#: src/LYLocal.c:1488
msgid "Invalid mode format."
msgstr "Ogiltigt format p� beh�righet."

#: src/LYLocal.c:1492
msgid "Invalid syntax format."
msgstr "Ogiltig syntaxformat."

#: src/LYLocal.c:1674
msgid "Warning!  UUDecoded file will exist in the directory you started Lynx."
msgstr "Varning! UU-avkodad fil lagras i katalogen du startade Lynx fr�n."

#: src/LYLocal.c:1864
msgid "NULL URL pointer"
msgstr "URL-pekare �r NULL"

#: src/LYLocal.c:1946
#, c-format
msgid "Executing %s "
msgstr "K�r %s "

#: src/LYLocal.c:1949
msgid "Executing system command. This might take a while."
msgstr "K�r systemkommando. Detta kan ta en stund."

#: src/LYLocal.c:2021
msgid "Current directory:"
msgstr "Aktuell katalog:"

#: src/LYLocal.c:2024 src/LYLocal.c:2042
msgid "Current selection:"
msgstr "Aktuell markering:"

#: src/LYLocal.c:2028
msgid "Nothing currently selected."
msgstr "Ingenting har markerats."

#: src/LYLocal.c:2044
msgid "tagged item:"
msgstr "markerad post:"

#: src/LYLocal.c:2045
msgid "tagged items:"
msgstr "markerade poster:"

#: src/LYLocal.c:2142 src/LYLocal.c:2153
msgid "Illegal filename; request ignored."
msgstr "Ogiltigt filnamn; beg�ran ignorerad."

#. directory not writable
#: src/LYLocal.c:2251 src/LYLocal.c:2310
msgid "Install in the selected directory not permitted."
msgstr "Installation i vald katalog ej till�ten."

#: src/LYLocal.c:2306
msgid "The selected item is not a directory!  Request ignored."
msgstr "Vald post �r inte en katalog! Beg�ran ignorerad."

#: src/LYLocal.c:2315
msgid "Just a moment, ..."
msgstr "Ett �gonblick, ..."

#: src/LYLocal.c:2332
msgid "Error building install args"
msgstr "Fel vid uppbyggning av installationsflaggor"

#: src/LYLocal.c:2347 src/LYLocal.c:2378
#, c-format
msgid "Source and target are the same: %s"
msgstr "K�lla och m�l �r samma: %s"

#: src/LYLocal.c:2354 src/LYLocal.c:2385
#, c-format
msgid "Already in target directory: %s"
msgstr "Redan i m�lkatalog: %s"

#: src/LYLocal.c:2403
msgid "Installation complete"
msgstr "Installation f�rdig"

#: src/LYLocal.c:2590
msgid "Temporary URL or list would be too long."
msgstr "Tempor�r adress eller lista skulle vara f�r l�ng."

#: src/LYMail.c:520
msgid "Sending"
msgstr "Skickar"

#: src/LYMail.c:1006
#, c-format
msgid "The link   %s :?: %s \n"
msgstr "L�nken %s :?: %s \n"

#: src/LYMail.c:1008
#, c-format
msgid "called \"%s\"\n"
msgstr "anropade \"%s\"\n"

#: src/LYMail.c:1009
#, c-format
msgid "in the file \"%s\" called \"%s\"\n"
msgstr "i filen \"%s\" anropade \"%s\"\n"

#: src/LYMail.c:1010
msgid "was requested but was not available."
msgstr "efterfr�gades men var inte tillg�nglig."

#: src/LYMail.c:1011
msgid "Thought you might want to know."
msgstr "T�nkte att du kanske ville veta."

#: src/LYMail.c:1013
msgid "This message was automatically generated by"
msgstr "Detta meddelande automatgenererades av"

#: src/LYMail.c:1728
msgid "No system mailer configured"
msgstr "E-postprogram inte konfigurerat i systemet"

#: src/LYMain.c:1000
msgid "No Winsock found, sorry."
msgstr "Ingen Winsock hittades, urs�kta."

#: src/LYMain.c:1195
msgid "You MUST define a valid TMP or TEMP area!"
msgstr "Du M�STE ange ett giltigt TMP- eller TEMP-omr�de!"

#: src/LYMain.c:1248 src/LYMainLoop.c:5053
msgid "No such directory"
msgstr "Katalogen finns ej"

#: src/LYMain.c:1455
#, c-format
msgid ""
"\n"
"Configuration file %s is not available.\n"
"\n"
msgstr ""
"\n"
"Konfigurationsfil %s ej tillg�nglig.\n"
"\n"

#: src/LYMain.c:1465
#, c-format
msgid ""
"\n"
"Lynx character sets not declared.\n"
"\n"
msgstr ""
"\n"
"Lynxteckenupps�ttningar ej deklarerade.\n"
"\n"

#: src/LYMain.c:1494
#, c-format
msgid ""
"\n"
"Lynx edit map not declared.\n"
"\n"
msgstr ""
"\n"
"Lynxredigeringskarta ej deklarerad.\n"
"\n"

#: src/LYMain.c:1520
#, c-format
msgid ""
"\n"
"Lynx file %s is not available.\n"
"\n"
msgstr ""
"\n"
"Lynxfil %s ej tillg�nglig.\n"
"\n"

#: src/LYMain.c:1750
msgid "Warning:"
msgstr "Varning:"

#: src/LYMain.c:2315
msgid "persistent cookies state will be changed in next session only."
msgstr "varaktiga kakinst�llningar �ndras endast i n�sta session."

#: src/LYMain.c:2552 src/LYMain.c:2597
#, c-format
msgid "Lynx: ignoring unrecognized charset=%s\n"
msgstr "Lynx: ignorerar ok�nd teckenupps�ttning %s\n"

#: src/LYMain.c:3108
#, c-format
msgid "%s Version %s (%s)"
msgstr "%s version %s (%s)"

#: src/LYMain.c:3143
#, c-format
msgid "Built on %s %s %s\n"
msgstr "Byggd %s %s %s\n"

#: src/LYMain.c:3165
msgid "Copyrights held by the University of Kansas, CERN, and other contributors."
msgstr "Upphovsr�tten �gs av University of Kansas, CERN, och andra bidragsl�mnare."

#: src/LYMain.c:3166
msgid "Distributed under the GNU General Public License."
msgstr "Distribuerad enligt GNU General Public License."

#: src/LYMain.c:3167
msgid "See http://lynx.isc.org/ and the online help for more information."
msgstr "Se http://lynx.isc.org/ och direkthj�lpen f�r ytterligare information."

#: src/LYMain.c:3939
#, c-format
msgid "USAGE: %s [options] [file]\n"
msgstr "ANV�NDNING: %s [flaggor] [fil]\n"

#: src/LYMain.c:3940
#, c-format
msgid "Options are:\n"
msgstr "Flaggorna �r:\n"

#: src/LYMain.c:4239
#, c-format
msgid "%s: Invalid Option: %s\n"
msgstr "%s: Ok�nd flagga: %s\n"

#: src/LYMainLoop.c:575
#, c-format
msgid "Internal error: Invalid mouse link %d!"
msgstr "Internt fel: Ogiltig musl�nk %d!"

#: src/LYMainLoop.c:692 src/LYMainLoop.c:5075
msgid "A URL specified by the user"
msgstr "En adress angiven av anv�ndaren"

#: src/LYMainLoop.c:1148
msgid "Enctype multipart/form-data not yet supported!  Cannot submit."
msgstr "Kodningen multiport/form-data st�ds inte �nnu! Kan inte skicka."

#.
#. * Make a name for this help file.
#.
#: src/LYMainLoop.c:3050
msgid "Help Screen"
msgstr "Hj�lpsk�rm"

#: src/LYMainLoop.c:3171
msgid "System Index"
msgstr "Systemindex"

#: src/LYMainLoop.c:3531 src/LYMainLoop.c:5299
msgid "Entry into main screen"
msgstr "Ing�ng till huvudsk�rm"

#: src/LYMainLoop.c:3794
msgid "No next document present"
msgstr "Det finns inget n�sta dokument"

#: src/LYMainLoop.c:4093
msgid "charset for this document specified explicitly, sorry..."
msgstr "teckenupps�ttning f�r detta dokumentet explicit deklarerat, urs�kta..."

#: src/LYMainLoop.c:5029
msgid "cd to:"
msgstr "byt katalog till:"

#: src/LYMainLoop.c:5056
msgid "A component of path is not a directory"
msgstr "En del av s�kv�gen �r inte en katalog"

#: src/LYMainLoop.c:5059
msgid "failed to change directory"
msgstr "lyckades inte byta katalog"

#: src/LYMainLoop.c:6220
msgid "Reparsing document under current settings..."
msgstr "Tolkar om dokumentet med aktuella inst�llningar..."

#: src/LYMainLoop.c:6511
#, c-format
msgid "Fatal error - could not open output file %s\n"
msgstr "Fatalt fel - kunde inte �ppna utdatafil %s\n"

# Kollas!
#: src/LYMainLoop.c:6856
msgid "TABLE center enable."
msgstr "Tabellcentrering aktiverad."

# Kollas!
#: src/LYMainLoop.c:6859
msgid "TABLE center disable."
msgstr "Tabellcentrering inaktiverad."

#: src/LYMainLoop.c:6936
msgid "Current URL is empty."
msgstr "Nuvarande adress �r tom."

#: src/LYMainLoop.c:6938 src/LYUtils.c:1790
msgid "Copy to clipboard failed."
msgstr "Misslyckades kopiera till urklipp."

#: src/LYMainLoop.c:6940
msgid "Document URL put to clipboard."
msgstr "Dokumentadress lagd i urklipp."

#: src/LYMainLoop.c:6942
msgid "Link URL put to clipboard."
msgstr "L�nkadress lagd i urklipp."

#: src/LYMainLoop.c:6969
msgid "No URL in the clipboard."
msgstr "Ingen adress i urklipp."

#: src/LYMainLoop.c:7633 src/LYMainLoop.c:7803
msgid "-index-"
msgstr "-index-"

#: src/LYMainLoop.c:7743
msgid "lynx: Can't access startfile"
msgstr "lynx: Kan inte komma �t startfil"

#: src/LYMainLoop.c:7755
msgid "lynx: Start file could not be found or is not text/html or text/plain"
msgstr "lynx: Startfilen hittades inte eller �r varken text/html eller text/plain"

#: src/LYMainLoop.c:7756
msgid "      Exiting..."
msgstr "      Avslutar..."

#: src/LYMainLoop.c:7797
msgid "-more-"
msgstr "-mer-"

#. Enable scrolling.
#: src/LYNews.c:183
msgid "You will be posting to:"
msgstr "Du kommer att skicka till:"

#.
#. * Get the mail address for the From header, offering personal_mail_address
#. * as default.
#.
#: src/LYNews.c:192
msgid ""
"\n"
"\n"
" Please provide your mail address for the From: header\n"
msgstr ""
"\n"
"\n"
" Ange din e-postadress f�r avs�ndarf�ltet\n"

#.
#. * Get the Subject header, offering the current document's title as the
#. * default if this is a followup rather than a new post.  - FM
#.
#: src/LYNews.c:209
msgid ""
"\n"
"\n"
" Please provide or edit the Subject: header\n"
msgstr ""
"\n"
"\n"
" Ange eller redigera �renderaden\n"

#: src/LYNews.c:299
msgid ""
"\n"
"\n"
" Please provide or edit the Organization: header\n"
msgstr ""
"\n"
"\n"
" Ange eller redigera organisationsf�ltet\n"

#.
#. * Use the built in line editior.
#.
#: src/LYNews.c:356
msgid ""
"\n"
"\n"
" Please enter your message below."
msgstr ""
"\n"
"\n"
" Skriv ditt inl�gg nedan."

#: src/LYNews.c:402
msgid "Message has no original text!"
msgstr "Inl�gget har ingen ursprunglig text!"

#: src/LYOptions.c:761
msgid "review/edit B)ookmarks files"
msgstr "se/redigera B)okm�rkesfiler"

#: src/LYOptions.c:763
msgid "B)ookmark file: "
msgstr "B)okm�rkesfil: "

#: src/LYOptions.c:2126 src/LYOptions.c:2133
msgid "ON"
msgstr "P�"

#. verbose_img variable
#: src/LYOptions.c:2127 src/LYOptions.c:2132 src/LYOptions.c:2280 src/LYOptions.c:2291
msgid "OFF"
msgstr "AV"

#: src/LYOptions.c:2128
msgid "NEVER"
msgstr "ALDRIG"

#: src/LYOptions.c:2129
msgid "ALWAYS"
msgstr "ALLTID"

#: src/LYOptions.c:2145 src/LYOptions.c:2272
msgid "ignore"
msgstr "ignorera"

#: src/LYOptions.c:2146
msgid "ask user"
msgstr "fr�ga anv�ndaren"

#: src/LYOptions.c:2147
msgid "accept all"
msgstr "ta emot alla"

#: src/LYOptions.c:2159
msgid "ALWAYS OFF"
msgstr "ALLTID AV"

#: src/LYOptions.c:2160
msgid "FOR LOCAL FILES ONLY"
msgstr "ENDAST F�R LOKALA FILER"

#: src/LYOptions.c:2162
msgid "ALWAYS ON"
msgstr "ALLTID P�"

# Numeriskt tangentbord
#: src/LYOptions.c:2174
msgid "Numbers act as arrows"
msgstr "Siffror som pilar"

#: src/LYOptions.c:2176
msgid "Links are numbered"
msgstr "Numrerade l�nkar"

#: src/LYOptions.c:2179
msgid "Links and form fields are numbered"
msgstr "Numrerade l�nkar och formul�rf�lt"

#: src/LYOptions.c:2182
msgid "Form fields are numbered"
msgstr "Numrerade formul�rf�lt"

#: src/LYOptions.c:2192
msgid "Case insensitive"
msgstr "Skilj inte VERSALER och gemener"

#: src/LYOptions.c:2193
msgid "Case sensitive"
msgstr "Skilj VERSALER och gemener"

#: src/LYOptions.c:2217
msgid "prompt normally"
msgstr "fr�ga som vanligt"

#: src/LYOptions.c:2218
msgid "force yes-response"
msgstr "svara alltid ja"

#: src/LYOptions.c:2219
msgid "force no-response"
msgstr "svara alltid nej"

#: src/LYOptions.c:2237
msgid "Novice"
msgstr "Nyb�rjare"

#: src/LYOptions.c:2238
msgid "Intermediate"
msgstr "Amat�r"

#: src/LYOptions.c:2239
msgid "Advanced"
msgstr "Avancerad"

#: src/LYOptions.c:2248
msgid "By First Visit"
msgstr "Efter f�rsta bes�k"

#: src/LYOptions.c:2250
msgid "By First Visit Reversed"
msgstr "Efter f�rsta anv�ndning, omv�nt"

#: src/LYOptions.c:2251
msgid "As Visit Tree"
msgstr "Som bes�kstr�d"

#: src/LYOptions.c:2252
msgid "By Last Visit"
msgstr "Efter senaste bes�k"

#: src/LYOptions.c:2254
msgid "By Last Visit Reversed"
msgstr "Efter senaste bes�k, omv�nt"

#. Old_DTD variable
#: src/LYOptions.c:2265
msgid "relaxed (TagSoup mode)"
msgstr "avslappnad (TagSoup-l�ge)"

#: src/LYOptions.c:2266
msgid "strict (SortaSGML mode)"
msgstr "strikt (SortaSGML-l�ge)"

#: src/LYOptions.c:2273
msgid "as labels"
msgstr "som etiketter"

#: src/LYOptions.c:2274
msgid "as links"
msgstr "som l�nkar"

#: src/LYOptions.c:2281
msgid "show filename"
msgstr "visa filnamn"

#: src/LYOptions.c:2292
msgid "STANDARD"
msgstr "NORMAL"

#: src/LYOptions.c:2293
msgid "ADVANCED"
msgstr "AVANCERAD"

#: src/LYOptions.c:2319
msgid "Directories first"
msgstr "Kataloger f�rst"

#: src/LYOptions.c:2320
msgid "Files first"
msgstr "Filer f�rst"

#: src/LYOptions.c:2321
msgid "Mixed style"
msgstr "Blandad visning"

#: src/LYOptions.c:2329 src/LYOptions.c:2346
msgid "By Name"
msgstr "Efter namn"

#: src/LYOptions.c:2330 src/LYOptions.c:2347
msgid "By Type"
msgstr "Efter typ"

#: src/LYOptions.c:2331 src/LYOptions.c:2348
msgid "By Size"
msgstr "Efter storlek"

#: src/LYOptions.c:2332 src/LYOptions.c:2349
msgid "By Date"
msgstr "Efter datum"

#: src/LYOptions.c:2333
msgid "By Mode"
msgstr "Efter l�ge"

#: src/LYOptions.c:2335
msgid "By User"
msgstr "Efter anv�ndare"

#: src/LYOptions.c:2336
msgid "By Group"
msgstr "Efter grupp"

#: src/LYOptions.c:2357
msgid "Do not show rate"
msgstr "Visa inte hastighe"

#: src/LYOptions.c:2358 src/LYOptions.c:2359
#, c-format
msgid "Show %s/sec rate"
msgstr "Visa hastighet som %s/s"

#: src/LYOptions.c:2361 src/LYOptions.c:2362
#, c-format
msgid "Show %s/sec, ETA"
msgstr "Visa %s/s, tid kvar"

#: src/LYOptions.c:2374
msgid "Accept lynx's internal types"
msgstr "Godta lynx interna typer"

#: src/LYOptions.c:2375
msgid "Also accept lynx.cfg's types"
msgstr "Godta �ven typer fr�n lynx.cfg"

#: src/LYOptions.c:2376
msgid "Also accept user's types"
msgstr "Godta �ven anv�ndarens typer"

#: src/LYOptions.c:2377
msgid "Also accept system's types"
msgstr "Godta �ven systemets typer"

#: src/LYOptions.c:2378
msgid "Accept all types"
msgstr "Godta alla typer"

#: src/LYOptions.c:2387
msgid "gzip"
msgstr "gzip"

#: src/LYOptions.c:2388
msgid "deflate"
msgstr "deflate"

#: src/LYOptions.c:2391
msgid "compress"
msgstr "compress"

#: src/LYOptions.c:2394
msgid "bzip2"
msgstr "bzip2"

#: src/LYOptions.c:2396
msgid "All"
msgstr "Alla"

#: src/LYOptions.c:2664 src/LYOptions.c:2688
#, c-format
msgid "Use %s to invoke the Options menu!"
msgstr "Anv�nd %s f�r att n� alternativmenyn!"

#: src/LYOptions.c:3438
msgid "(options marked with (!) will not be saved)"
msgstr "(inst�llningar markerade med (!) kommer ej att sparas)"

#: src/LYOptions.c:3446
msgid "General Preferences"
msgstr "Allm�nna inst�llningar"

#. ***************************************************************
#. User Mode: SELECT
#: src/LYOptions.c:3450
msgid "User mode"
msgstr "Anv�ndarl�ge"

#. Editor: INPUT
#: src/LYOptions.c:3456
msgid "Editor"
msgstr "Redigeringsprogram"

#. Search Type: SELECT
#: src/LYOptions.c:3461
msgid "Type of Search"
msgstr "S�ktyp"

#: src/LYOptions.c:3466
msgid "Security and Privacy"
msgstr "S�kerhet och personlig integritet"

#. ***************************************************************
#. Cookies: SELECT
#: src/LYOptions.c:3470
msgid "Cookies"
msgstr "Kakor"

#. Cookie Prompting: SELECT
#: src/LYOptions.c:3484
msgid "Invalid-Cookie Prompting"
msgstr "Fr�ga f�r ogiltiga kakor"

#. SSL Prompting: SELECT
#: src/LYOptions.c:3491
msgid "SSL Prompting"
msgstr "Fr�ga f�r SSL"

#: src/LYOptions.c:3497
msgid "Keyboard Input"
msgstr "Tangentbordsindata"

#. ***************************************************************
#. Keypad Mode: SELECT
#: src/LYOptions.c:3501
msgid "Keypad mode"
msgstr "Numeriskt tangentbord"

#. Emacs keys: ON/OFF
#: src/LYOptions.c:3507
msgid "Emacs keys"
msgstr "Emacstangenter"

#. VI Keys: ON/OFF
#: src/LYOptions.c:3513
msgid "VI keys"
msgstr "VI-tangenter"

#. Line edit style: SELECT
#. well, at least 2 line edit styles available
#: src/LYOptions.c:3520
msgid "Line edit style"
msgstr "Radredigeringsstil"

#. Keyboard layout: SELECT
#: src/LYOptions.c:3532
msgid "Keyboard layout"
msgstr "Tangentbordsmall"

#.
#. * Display and Character Set
#.
#: src/LYOptions.c:3546
msgid "Display and Character Set"
msgstr "Visning och teckenupps�ttning"

#. Use locale-based character set: ON/OFF
#: src/LYOptions.c:3551
msgid "Use locale-based character set"
msgstr "Lokalbaserad teckenupps�ttning"

#. Display Character Set: SELECT
#: src/LYOptions.c:3560
msgid "Display character set"
msgstr "Teckenupps�ttning f�r visning"

#: src/LYOptions.c:3591
msgid "Assumed document character set"
msgstr "F�rvald dokumentteckenupps�ttning"

#.
#. * Since CJK people hardly mixed with other world
#. * we split the header to make it more readable:
#. * "CJK mode" for CJK display charsets, and "Raw 8-bit" for others.
#.
#: src/LYOptions.c:3611
msgid "CJK mode"
msgstr "CJK-l�ge"

#: src/LYOptions.c:3613
msgid "Raw 8-bit"
msgstr "R� 8-bitars"

#. X Display: INPUT
#: src/LYOptions.c:3621
msgid "X Display"
msgstr "X-display"

#.
#. * Document Appearance
#.
#: src/LYOptions.c:3627
msgid "Document Appearance"
msgstr "Dokumentutseende"

#: src/LYOptions.c:3633
msgid "Show color"
msgstr "Visa f�rg"

#. Show cursor: ON/OFF
#: src/LYOptions.c:3657
msgid "Show cursor"
msgstr "Visa mark�r"

#. Underline links: ON/OFF
#: src/LYOptions.c:3663
msgid "Underline links"
msgstr "Stryk under l�nkar"

#. Show scrollbar: ON/OFF
#: src/LYOptions.c:3670
msgid "Show scrollbar"
msgstr "Visa rullningslist"

#. Select Popups: ON/OFF
#: src/LYOptions.c:3677
msgid "Popups for select fields"
msgstr "Popup f�r valf�lt"

#. HTML error recovery: SELECT
#: src/LYOptions.c:3683
msgid "HTML error recovery"
msgstr "HTML-fel�terh�mtning"

#. Show Images: SELECT
#: src/LYOptions.c:3689
msgid "Show images"
msgstr "Visa bilder"

#. Verbose Images: ON/OFF
#: src/LYOptions.c:3703
msgid "Verbose images"
msgstr "Pratsamma bilder"

#.
#. * Headers Transferred to Remote Servers
#.
#: src/LYOptions.c:3711
msgid "Headers Transferred to Remote Servers"
msgstr "Fr�gehuvud �verf�rt till fj�rrservrar"

#. ***************************************************************
#. Mail Address: INPUT
#: src/LYOptions.c:3715
msgid "Personal mail address"
msgstr "Egen e-postadress"

#. Mail Address: INPUT
#: src/LYOptions.c:3720
#, fuzzy
msgid "Password for anonymous ftp"
msgstr "L�senord f�r diskussionsv�rd \"%s\":"

#. Preferred media type: SELECT
#: src/LYOptions.c:3725
msgid "Preferred media type"
msgstr "�nskad mediatyp"

#. Preferred encoding: SELECT
#: src/LYOptions.c:3731
msgid "Preferred encoding"
msgstr "�nskade kodningsform"

#. Preferred Document Character Set: INPUT
#: src/LYOptions.c:3737
msgid "Preferred document character set"
msgstr "�nskad dokumentteckenupps�ttning"

#. Preferred Document Language: INPUT
#: src/LYOptions.c:3742
msgid "Preferred document language"
msgstr "�nskade dokumentspr�k"

#: src/LYOptions.c:3748
msgid "User-Agent header"
msgstr "Webbl�saridentifiering"

#.
#. * Listing and Accessing Files
#.
#: src/LYOptions.c:3756
msgid "Listing and Accessing Files"
msgstr "Visning av och �tkomst till filer"

#. ***************************************************************
#. FTP sort: SELECT
#: src/LYOptions.c:3760
msgid "FTP sort criteria"
msgstr "Sortering f�r ftp-kataloger"

#. Local Directory Sort: SELECT
#: src/LYOptions.c:3767
msgid "Local directory sort criteria"
msgstr "Sortering f�r lokala kataloger"

#. Local Directory Order: SELECT
#: src/LYOptions.c:3773
msgid "Local directory sort order"
msgstr "Sortering f�r lokala kataloger"

#: src/LYOptions.c:3782
msgid "Show dot files"
msgstr "Visa punktfiler"

#: src/LYOptions.c:3790
msgid "Execution links"
msgstr "Exekveringsl�nkar"

#. Show transfer rate: SELECT
#: src/LYOptions.c:3810
msgid "Show transfer rate"
msgstr "Visa �verf�ringshastighet"

#.
#. * Special Files and Screens
#.
#: src/LYOptions.c:3830
msgid "Special Files and Screens"
msgstr "Speciella filer och sk�rmar"

#: src/LYOptions.c:3835
msgid "Multi-bookmarks"
msgstr "Multibokm�rken"

#: src/LYOptions.c:3843
msgid "Review/edit Bookmarks files"
msgstr "Se/�ndra bokm�rkesfiler"

#: src/LYOptions.c:3845
msgid "Goto multi-bookmark menu"
msgstr "G� till multibokm�rkesmenyn"

#: src/LYOptions.c:3847
msgid "Bookmarks file"
msgstr "Bokm�rkesfil"

#. Visited Pages: SELECT
#: src/LYOptions.c:3853
msgid "Visited Pages"
msgstr "Bes�kta sidor"

#: src/LYOptions.c:3858
msgid "View the file "
msgstr "Visa filen "

#: src/LYPrint.c:946
#, c-format
msgid " Print job complete.\n"
msgstr " Utskriftsjobb f�rdigt.\n"

#: src/LYPrint.c:1271
msgid "Document:"
msgstr "Dokument:"

#: src/LYPrint.c:1272
msgid "Number of lines:"
msgstr "Antal l�nkar:"

#: src/LYPrint.c:1273
msgid "Number of pages:"
msgstr "Antal sidor:"

#: src/LYPrint.c:1274
msgid "pages"
msgstr "sidor"

#: src/LYPrint.c:1274
msgid "page"
msgstr "sida"

#: src/LYPrint.c:1275
msgid "(approximately)"
msgstr "(ungef�r)"

#: src/LYPrint.c:1282
msgid "Some print functions have been disabled!"
msgstr "Vissa utskriftsfunktioner har deaktiverats!"

#: src/LYPrint.c:1286
msgid "Standard print options:"
msgstr "F�rdefinierade utskriftsalternativ:"

#: src/LYPrint.c:1287
msgid "Print options:"
msgstr "Utskriftsalternativ"

#: src/LYPrint.c:1294
msgid "Save to a local file"
msgstr "Spara som lokal fil"

#: src/LYPrint.c:1296
msgid "Save to disk disabled"
msgstr "\"Spara p� disk\" deaktiverad"

#: src/LYPrint.c:1303
msgid "Mail the file"
msgstr "S�nd filer per e-post"

#: src/LYPrint.c:1310
msgid "Print to the screen"
msgstr "Skriv ut p� sk�rmen"

#: src/LYPrint.c:1315
msgid "Print out on a printer attached to your vt100 terminal"
msgstr "Skriv ut p� en skrivare ansluten till din vt100-terminal"

#: src/LYReadCFG.c:342
#, c-format
msgid ""
"Syntax Error parsing COLOR in configuration file:\n"
"The line must be of the form:\n"
"COLOR:INTEGER:FOREGROUND:BACKGROUND\n"
"\n"
"Here FOREGROUND and BACKGROUND must be one of:\n"
"The special strings 'nocolor' or 'default', or\n"
msgstr ""
"Syntaxfel vid tolkning av f�rg (COLOR) i konfigurationsfil:\n"
"Raden m�ste vara p� formen:\n"
"COLOR:HELTAL:F�RGRUND:BAKGRUND\n"
"\n"
"F�RGRUND och BAKGRUND m�ste vara en av:\n"
"specialstr�ngarna \"nocolor\" eller \"default\", eller\n"

#: src/LYReadCFG.c:355
msgid "Offending line:"
msgstr "Felaktig rad:"

#: src/LYReadCFG.c:625
#, c-format
msgid "key remapping of %s to %s for %s failed\n"
msgstr "tangentomdefiniering av %s till %s f�r %s misslyckades\n"

#: src/LYReadCFG.c:632
#, c-format
msgid "key remapping of %s to %s failed\n"
msgstr "tangentomdefiniering av %s till %s misslyckades\n"

#: src/LYReadCFG.c:653
#, c-format
msgid "invalid line-editor selection %s for key %s, selecting all\n"
msgstr "ogiltig radredigeringsval %s f�r tangent %s, v�ljer alla\n"

#: src/LYReadCFG.c:678 src/LYReadCFG.c:690
#, c-format
msgid "setting of line-editor binding for key %s (0x%x) to 0x%x for %s failed\n"
msgstr "inst�llning av radredigeringsdefinition f�r tangent %s (0x%x) till 0x%x f�r %s misslyckades\n"

#: src/LYReadCFG.c:694
#, c-format
msgid "setting of line-editor binding for key %s (0x%x) for %s failed\n"
msgstr "inst�llning av radredigeringsdefinition f�r tangent %s (0x%x) f�r %s misslyckades\n"

#: src/LYReadCFG.c:792
#, c-format
msgid "Lynx: cannot start, CERN rules file %s is not available\n"
msgstr "Lynx: kan inte b�rja, CERN-regelfilen %s ej tillg�nglig\n"

#: src/LYReadCFG.c:793
msgid "(no name)"
msgstr "(inget namn)"

#: src/LYReadCFG.c:1784
#, c-format
msgid "More than %d nested lynx.cfg includes -- perhaps there is a loop?!?\n"
msgstr "Mer �n %d staplade lynx.cfg-inkluderingar -- kanske en slinga?!?\n"

#: src/LYReadCFG.c:1786
#, c-format
msgid "Last attempted include was '%s',\n"
msgstr "Sista f�rs�kta inkludering var \"%s\",\n"

#: src/LYReadCFG.c:1787
#, c-format
msgid "included from '%s'.\n"
msgstr "inkluderad fr�n \"%s\".\n"

#: src/LYReadCFG.c:2194 src/LYReadCFG.c:2207 src/LYReadCFG.c:2265
msgid "The following is read from your lynx.cfg file."
msgstr "F�ljande l�ses fr�n din lynx.cfg-fil."

#: src/LYReadCFG.c:2195 src/LYReadCFG.c:2208
msgid "Please read the distribution"
msgstr "Se distributionens"

#: src/LYReadCFG.c:2201 src/LYReadCFG.c:2211
msgid "for more comments."
msgstr "f�r ytterligare kommentarer."

#: src/LYReadCFG.c:2247
msgid "RELOAD THE CHANGES"
msgstr "H�MTA OM �NDRINGARNA"

#: src/LYReadCFG.c:2255
msgid "Your primary configuration"
msgstr "Din prim�ra konfiguration"

#: src/LYShowInfo.c:172
msgid "Directory that you are currently viewing"
msgstr "Visad katalog"

#: src/LYShowInfo.c:175
msgid "Name:"
msgstr "Namn:"

#: src/LYShowInfo.c:178
msgid "URL:"
msgstr "Adress:"

#: src/LYShowInfo.c:192
msgid "Directory that you have currently selected"
msgstr "Markerade kataloger"

#: src/LYShowInfo.c:194
msgid "File that you have currently selected"
msgstr "Markerade filer"

#: src/LYShowInfo.c:197
msgid "Symbolic link that you have currently selected"
msgstr "Markerade symboliska l�nkar"

#: src/LYShowInfo.c:200
msgid "Item that you have currently selected"
msgstr "Markerade poster"

#: src/LYShowInfo.c:202
msgid "Full name:"
msgstr "Fullt namn:"

#: src/LYShowInfo.c:211
msgid "Unable to follow link"
msgstr "Kan inte f�lja l�nk"

#: src/LYShowInfo.c:213
msgid "Points to file:"
msgstr "Pekar p� fil:"

#: src/LYShowInfo.c:218
msgid "Name of owner:"
msgstr "Namn p� �gare:"

#: src/LYShowInfo.c:221
msgid "Group name:"
msgstr "Gruppnamn:"

#: src/LYShowInfo.c:223
msgid "File size:"
msgstr "Filstorlek:"

#: src/LYShowInfo.c:225
msgid "(bytes)"
msgstr "(byte)"

#.
#. * Include date and time information.
#.
#: src/LYShowInfo.c:230
msgid "Creation date:"
msgstr "Skapad den:"

#: src/LYShowInfo.c:233
msgid "Last modified:"
msgstr "Senast �ndrad:"

#: src/LYShowInfo.c:236
msgid "Last accessed:"
msgstr "Senast �tkommen:"

#: src/LYShowInfo.c:242
msgid "Access Permissions"
msgstr "�tkomstbeh�righet"

#: src/LYShowInfo.c:277
msgid "Group:"
msgstr "Grupp:"

#: src/LYShowInfo.c:297
msgid "World:"
msgstr "�vriga:"

#: src/LYShowInfo.c:304
msgid "File that you are currently viewing"
msgstr "Visad fil"

#: src/LYShowInfo.c:312 src/LYShowInfo.c:416
msgid "Linkname:"
msgstr "L�nknamn:"

#: src/LYShowInfo.c:318 src/LYShowInfo.c:333
msgid "Charset:"
msgstr "Teckenupps�ttning:"

#: src/LYShowInfo.c:332
msgid "(assumed)"
msgstr "(antogs)"

#: src/LYShowInfo.c:339
msgid "Server:"
msgstr "Server:"

#: src/LYShowInfo.c:342
msgid "Date:"
msgstr "Datum:"

#: src/LYShowInfo.c:345
msgid "Last Mod:"
msgstr "Senaste �ndring:"

#: src/LYShowInfo.c:350
msgid "Expires:"
msgstr "Utg�r:"

#: src/LYShowInfo.c:353
msgid "Cache-Control:"
msgstr "Cachekontroll:"

#: src/LYShowInfo.c:356
msgid "Content-Length:"
msgstr "Datal�ngd:"

#: src/LYShowInfo.c:360
#, fuzzy
msgid "Length:"
msgstr "Datal�ngd:"

#: src/LYShowInfo.c:365
msgid "Language:"
msgstr "Spr�k:"

#: src/LYShowInfo.c:372
msgid "Post Data:"
msgstr "\"POST\"-data:"

#: src/LYShowInfo.c:375
msgid "Post Content Type:"
msgstr "\"POST\"-datatyp:"

#: src/LYShowInfo.c:378
msgid "Owner(s):"
msgstr "�gare:"

#: src/LYShowInfo.c:383
msgid "size:"
msgstr "storlek:"

#: src/LYShowInfo.c:385
msgid "lines"
msgstr "rader"

#: src/LYShowInfo.c:389
msgid "forms mode"
msgstr "formul�rl�ge"

#: src/LYShowInfo.c:391
msgid "source"
msgstr "k�llkod"

#: src/LYShowInfo.c:392
msgid "normal"
msgstr "normal"

#: src/LYShowInfo.c:394
msgid ", safe"
msgstr ", s�ker"

#: src/LYShowInfo.c:396
msgid ", via internal link"
msgstr ", via intern l�nk"

#: src/LYShowInfo.c:401
msgid ", no-cache"
msgstr ", ingen cache"

#: src/LYShowInfo.c:403
msgid ", ISMAP script"
msgstr ", ISMAP-skript"

#: src/LYShowInfo.c:405
msgid ", bookmark file"
msgstr ", bokm�rkesfil"

#: src/LYShowInfo.c:409
msgid "mode:"
msgstr "l�ge:"

#: src/LYShowInfo.c:415
msgid "Link that you currently have selected"
msgstr "Markerad l�nk"

#: src/LYShowInfo.c:424
msgid "Method:"
msgstr "Metod:"

#: src/LYShowInfo.c:428
msgid "Enctype:"
msgstr "Kodningstyp:"

#: src/LYShowInfo.c:434
msgid "Action:"
msgstr "�tg�rd:"

#: src/LYShowInfo.c:439
msgid "(Form field)"
msgstr "(Formul�rf�lt)"

#: src/LYShowInfo.c:448
msgid "No Links on the current page"
msgstr "Ingen l�nk p� aktuell sida"

#: src/LYShowInfo.c:453
msgid "Server Headers:"
msgstr "Serverhuvuden:"

#: src/LYStyle.c:294
#, c-format
msgid ""
"Syntax Error parsing style in lss file:\n"
"[%s]\n"
"The line must be of the form:\n"
"OBJECT:MONO:COLOR (ie em:bold:brightblue:white)\n"
"where OBJECT is one of EM,STRONG,B,I,U,BLINK etc.\n"
"\n"
msgstr ""
"Syntaxfel vid tolkning av stil i lss-fil:\n"
"[%s]\n"
"Raden m�ste vara p� formen:\n"
"OBJEKT:MONO:F�RG (t.ex em:bold:brightblue:white)\n"
"d�r OBJEKT �r en av EM,STRONG,B,I,U,BLINK etc.\n"
"\n"

#: src/LYTraversal.c:108
msgid "here is a list of the history stack so that you may rebuild"
msgstr "h�r finns en lista �ver historikstacken s� att du kan bygga om"

#: src/LYUpload.c:75
msgid "ERROR! - upload command is misconfigured"
msgstr "FEL! - ins�ndningskommandot �r felkonfigurerat"

#: src/LYUpload.c:96
msgid "Illegal redirection \"../\" found! Request ignored."
msgstr "Felaktig omdirigering \"../\" hittad! Beg�ran ignorerad."

#: src/LYUpload.c:99
msgid "Illegal character \"/\" found! Request ignored."
msgstr "Felaktigt tecken \"/\" hittad! Beg�ran ignorerad."

#: src/LYUpload.c:102
msgid "Illegal redirection using \"~\" found! Request ignored."
msgstr "Ogiltig omdirigering med \"~\" hittad! Beg�ran ignorerad."

#: src/LYUpload.c:159
msgid "Unable to upload file."
msgstr "Kan inte skicka fil."

#: src/LYUpload.c:201
msgid "Upload To:"
msgstr "Skicka till:"

#: src/LYUpload.c:202
msgid "Upload options:"
msgstr "Ins�ndningsalternativ:"

#: src/LYUtils.c:1792
msgid "Download document URL put to clipboard."
msgstr "Adress till h�mtat dokument lagt i urklipp."

#: src/LYUtils.c:2569
msgid "Unexpected access protocol for this URL scheme."
msgstr "Ov�ntat �tkomstprotokoll f�r denna adresstyp."

#: src/LYUtils.c:3377
msgid "Too many tempfiles"
msgstr "F�r m�nga tempor�rfiler"

#: src/LYUtils.c:3681
msgid "unknown restriction"
msgstr "ok�nd begr�nsning"

#: src/LYUtils.c:3711
#, c-format
msgid "No restrictions set.\n"
msgstr "Inga begr�nsningar satta.\n"

#: src/LYUtils.c:3714
#, c-format
msgid "Restrictions set:\n"
msgstr "Satta begr�nsningar:\n"

#: src/LYUtils.c:5092
msgid "Cannot find HOME directory"
msgstr "Hittar inte hemkatalogen (HOME)"

#: src/LYrcFile.c:21
msgid "Normally disabled.  See ENABLE_LYNXRC in lynx.cfg\n"
msgstr "Vanligtvis avst�ngd. Se ENABLE_LYNXRC i lynx.cfg\n"

#: src/LYrcFile.c:318
msgid ""
"accept_all_cookies allows the user to tell Lynx to automatically\n"
"accept all cookies if desired.  The default is \"FALSE\" which will\n"
"prompt for each cookie.  Set accept_all_cookies to \"TRUE\" to accept\n"
"all cookies.\n"
msgstr ""
"accept_all_cookies l�ter anv�ndaren tala om f�r Lynx att automatiskt\n"
"acceptera alla kakor. F�rvalet �r \"FALSE\", och visar en fr�ga f�r\n"
"varje kaka. S�tt accept_all_cookies till \"TRUE\" f�r att acceptera\n"
"alla kakor.\n"

#: src/LYrcFile.c:325
msgid ""
"anonftp_password allows the user to tell Lynx to use the personal\n"
"email address as the password for anonymous ftp.  If no value is given,\n"
"Lynx will use the personal email address.  Set anonftp_password\n"
"to a different value if you choose.\n"
msgstr ""

#: src/LYrcFile.c:331
msgid ""
"bookmark_file specifies the name and location of the default bookmark\n"
"file into which the user can paste links for easy access at a later\n"
"date.\n"
msgstr ""
"bookmark_file anger namn och plats f�r standardbokm�rkesfilen, i vilken\n"
"anv�ndaren kan klistra in l�nkar f�r att l�tt komma �t dem senare.\n"

#: src/LYrcFile.c:336
msgid ""
"If case_sensitive_searching is \"on\" then when the user invokes a search\n"
"using the 's' or '/' keys, the search performed will be case sensitive\n"
"instead of case INsensitive.  The default is usually \"off\".\n"
msgstr ""
"Om case_sensitive_searching �r \"on\" n�r anv�ndaren startar en s�kning\n"
"med \"s\" eller \"/\" kommer s�kningen som genomf�rs att g�ra skillnad p�\n"
"gemener och versaler. F�rvalet �r normalt sett av (\"off\").\n"

#: src/LYrcFile.c:341
msgid ""
"The character_set definition controls the representation of 8 bit\n"
"characters for your terminal.  If 8 bit characters do not show up\n"
"correctly on your screen you may try changing to a different 8 bit\n"
"set or using the 7 bit character approximations.\n"
"Current valid characters sets are:\n"
msgstr ""
"Inst�llningen f�r character_set anger hur �ttabitarstecken representeras\n"
"p� din terminal. Om �ttabitarstecken inte visas korrekt p� din sk�rm kan\n"
"du f�rs�ka att �ndra till en annan �ttabitarsteckenupps�ttning, eller\n"
"anv�nda sjubitarstolkningarna.\n"
"Giltiga teckenupps�ttningar �r:\n"

#: src/LYrcFile.c:348
msgid ""
"cookie_accept_domains and cookie_reject_domains are comma-delimited\n"
"lists of domains from which Lynx should automatically accept or reject\n"
"all cookies.  If a domain is specified in both options, rejection will\n"
"take precedence.  The accept_all_cookies parameter will override any\n"
"settings made here.\n"
msgstr ""
"cookie_accept_domains och cookie_reject_domains �r kommaavdelade\n"
"listor �ver dom�ner fr�n vilka Lynx automatisk skall acceptera eller\n"
"avvisa kakor. Om en dom�n anges i b�da alternativet kommer avvisning\n"
"att g� f�re. Flaggan accept_all_cookies g�r f�re alla inst�llningar\n"
"som g�rs h�r.\n"

#: src/LYrcFile.c:356
msgid ""
"cookie_file specifies the file from which to read persistent cookies.\n"
"The default is ~/.lynx_cookies.\n"
msgstr ""
"cookie_file anger filen som varaktiga kakor skall l�sas fr�n.\n"
"F�rval �r ~/.lynx_cookies.\n"

#: src/LYrcFile.c:361
msgid ""
"cookie_loose_invalid_domains, cookie_strict_invalid_domains, and\n"
"cookie_query_invalid_domains are comma-delimited lists of which domains\n"
"should be subjected to varying degrees of validity checking.  If a\n"
"domain is set to strict checking, strict conformance to RFC2109 will\n"
"be applied.  A domain with loose checking will be allowed to set cookies\n"
"with an invalid path or domain attribute.  All domains will default to\n"
"querying the user for an invalid path or domain.\n"
msgstr ""
"cookie_loose_invalid_domains, cookie_strict_invalid_domains och\n"
"cookie_query_invalid_domains �r kommaavdelade listor �ver dom�ner som\n"
"skall underkastas olika niv�er av giltighetskontroll. Om en dom�n s�tts\n"
"till strikt kontroll kommer strikt tolkning av RFC2109 att g�lla.\n"
"En dom�n med l�s kontroll g�r det m�jligt att s�tta kakor med felaktiga\n"
"s�kv�g- eller dom�nattribut. Alla dom�ner f�r som f�rval fr�gor till\n"
"anv�ndaren f�r felaktiga s�kv�gar eller dom�ner.\n"

#: src/LYrcFile.c:375
msgid ""
"dir_list_order specifies the directory list order under DIRED_SUPPORT\n"
"(if implemented).  The default is \"ORDER_BY_NAME\"\n"
msgstr ""
"dir_list_order anger kataloglistesortering i DIRED_SUPPORT (om det �r\n"
"implementerat). F�rvalet �r \"ORDER_BY_NAME\"\n"

#: src/LYrcFile.c:380
msgid ""
"dir_list_styles specifies the directory list style under DIRED_SUPPORT\n"
"(if implemented).  The default is \"MIXED_STYLE\", which sorts both\n"
"files and directories together.  \"FILES_FIRST\" lists files first and\n"
"\"DIRECTORIES_FIRST\" lists directories first.\n"
msgstr ""
"dir_list_styles anger kataloglistestil i DIRED_SUPPORT (om det �r\n"
"implementerat). F�rvalet �r \"MIXED_STYLE\", vilket sorterar filer\n"
"och kataloger tillsammanns. \"FILES_FIRST\" listar filer f�rst, och\n"
"\"DIRECTORIES_FIRST\" listar kataloger f�rst.\n"

#: src/LYrcFile.c:388
msgid ""
"If emacs_keys is to \"on\" then the normal EMACS movement keys:\n"
"  ^N = down    ^P = up\n"
"  ^B = left    ^F = right\n"
"will be enabled.\n"
msgstr ""
"Om emacs_keys s�tts till \"on\" kommer EMACS-f�rflyttningstangeter att\n"
"aktiveras:\n"
"  ^N = ned      ^P = upp\n"
"  ^B = v�nster  ^F = h�ger\n"

#: src/LYrcFile.c:394
msgid ""
"file_editor specifies the editor to be invoked when editing local files\n"
"or sending mail.  If no editor is specified, then file editing is disabled\n"
"unless it is activated from the command line, and the built-in line editor\n"
"will be used for sending mail.\n"
msgstr ""
"file_editor anger vilket redigeringsprogram som skall aktiveras n�r lokala\n"
"filer redigeras, eller e-post s�nds. Om inget program anges deaktiveras\n"
"filredigering, s�vida det inte aktiveras fr�n kommandoraden, och den inbyggda\n"
"radredigeraren anv�nds f�r e-post.\n"

#: src/LYrcFile.c:400
msgid ""
"The file_sorting_method specifies which value to sort on when viewing\n"
"file lists such as FTP directories.  The options are:\n"
"   BY_FILENAME -- sorts on the name of the file\n"
"   BY_TYPE     -- sorts on the type of the file\n"
"   BY_SIZE     -- sorts on the size of the file\n"
"   BY_DATE     -- sorts on the date of the file\n"
msgstr ""
"file_sorting_method anger hur fillistor, s�som ftp-kataloger, skall\n"
"sorteras. Alternativen �r:\n"
"   BY_FILENAME -- sorterar efter filnamn\n"
"   BY_TYPE     -- sorterar efter filtyp\n"
"   BY_SIZE     -- sorterar efter filstorlek\n"
"   BY_DATE     -- sorterar efter fildatum\n"

#: src/LYrcFile.c:418
msgid ""
"lineedit_mode specifies the key binding used for inputting strings in\n"
"prompts and forms.  If lineedit_mode is set to \"Default Binding\" then\n"
"the following control characters are used for moving and deleting:\n"
"\n"
"             Prev  Next       Enter = Accept input\n"
"   Move char: <-    ->        ^G    = Cancel input\n"
"   Move word: ^P    ^N        ^U    = Erase line\n"
" Delete char: ^H    ^R        ^A    = Beginning of line\n"
" Delete word: ^B    ^F        ^E    = End of line\n"
"\n"
"Current lineedit modes are:\n"
msgstr ""
"lineedit_mode ange tangentbordsfunktioner som anv�nds f�r att skriva\n"
"in str�ngar i fr�gor och formul�r. Om lineedit_mode s�tts till\n"
"\"Default Binding\" kommer f�ljande kontrolltecken anv�ndas f�r att\n"
"flytta och ta bort:\n"
"\n"
"              Bak�t Fram�t      Enter = Bekr�fta indata\n"
" Flytta tecken: <-    ->        ^G    = Avbryt inmatning\n"
"    Flytta ord: ^P    ^N        ^U    = Radera rad\n"
" Radera tecken: ^H    ^R        ^A    = Radb�rjan\n"
"    Radera ord: ^B    ^F        ^E    = Radslut\n"
"\n"

#: src/LYrcFile.c:436
msgid ""
"The following allow you to define sub-bookmark files and descriptions.\n"
"The format is multi_bookmark<capital_letter>=<filename>,<description>\n"
"Up to 26 bookmark files (for the English capital letters) are allowed.\n"
"We start with \"multi_bookmarkB\" since 'A' is the default (see above).\n"
msgstr ""
"F�ljande g�r det m�jligt f�r dig att definiera underbokm�rkesfiler och\n"
"tillh�rande beskrivningar. Formatet �r:\n"
"multi_bookmark<stor bokstav>=<filnamn>,<beskrivning>\n"
"Upp till 26 bokm�rkesfiler (de stora bokst�verna A-Z) till�ts.\n"
"Vi b�rjar med \"multi_bookmarkB\" eftersom \"A\" �r f�rvalet (se ovan).\n"

#: src/LYrcFile.c:442
msgid ""
"personal_mail_address specifies your personal mail address.  The\n"
"address will be sent during HTTP file transfers for authorization and\n"
"logging purposes, and for mailed comments.\n"
"If you do not want this information given out, set the NO_FROM_HEADER\n"
"to TRUE in lynx.cfg, or use the -nofrom command line switch.  You also\n"
"could leave this field blank, but then you won't have it included in\n"
"your mailed comments.\n"
msgstr ""
"personal_mail_address anger din personliga e-postaderss. Adressen\n"
"s�nds under HTTP-fil�verf�ringar f�r auktoriserings- och\n"
"loggnings�ndam�l, samt f�r att s�nda kommentarer per e-post\n"
"Om du inte vill att denna information skall s�ndas, s�tt NO_FROM_HEADER\n"
"till TRUE i lynx.cfg, eller anv�nd kommandoradsflaggan -nofrom. Du kan\n"
"�ven l�mna detta f�lt blankt, men d� inkluderas det inte i kommentarer\n"
"du s�nder.\n"

#: src/LYrcFile.c:451
msgid ""
"preferred_charset specifies the character set in MIME notation (e.g.,\n"
"ISO-8859-2, ISO-8859-5) which Lynx will indicate you prefer in requests\n"
"to http servers using an Accept-Charset header.  The value should NOT\n"
"include ISO-8859-1 or US-ASCII, since those values are always assumed\n"
"by default.  May be a comma-separated list.\n"
"If a file in that character set is available, the server will send it.\n"
"If no Accept-Charset header is present, the default is that any\n"
"character set is acceptable.  If an Accept-Charset header is present,\n"
"and if the server cannot send a response which is acceptable\n"
"according to the Accept-Charset header, then the server SHOULD send\n"
"an error response, though the sending of an unacceptable response\n"
"is also allowed.\n"
msgstr ""
"preferred_charset anger de teckenupps�ttningar Lynx kommer att ange att\n"
"du �nskar ta emot i fr�gor till http-serverar i MIME-notation (t.ex\n"
"ISO-8859-2, ISO-8859-5). Detta s�nds i Accept-Charset-huvudet. V�rdet\n"
"b�r inte inneh�lla ISO-8859-1 eller US-ASCII eftersom de v�rdena alltid\n"
"antas som f�rval. Kan vara en kommaseparerad lista.\n"
"Om en fil i den teckenupps�ttningen finns att tillg� kommer servern\n"
"Om inget Accept-Charset s�nds �r f�rvalet att alla teckenupps�ttningar\n"
"�r acceptabla. Om en Accept-Charset �r tillg�nglig, och om servern inte\n"
"kan s�nda ett svar som �r acceptabelt enligt Accept-Charset-huvudet B�R\n"
"servern s�nda ett felmeddelande, �ven om det �r till�tet att s�nda �ven\n"
"ett icke-acceptabelt svar.\n"

#: src/LYrcFile.c:467
msgid ""
"preferred_language specifies the language in MIME notation (e.g., en,\n"
"fr, may be a comma-separated list in decreasing preference)\n"
"which Lynx will indicate you prefer in requests to http servers.\n"
"If a file in that language is available, the server will send it.\n"
"Otherwise, the server will send the file in its default language.\n"
msgstr ""
"preferred_language anger de spr�k som Lynx kommer att ange att du �nskar\n"
"ta emot i fr�gor till webbservrar i MIME-notation (t.ex en,fr, kan vara\n"
"en kommaseparerad lista i minskande prioriteringsordning).\n"
"Om en fil i det spr�ket finns att tillg� kommer servern s�nda den.\n"
"Annars kommer servern s�nda filen i sitt standardspr�k.\n"

#: src/LYrcFile.c:478
msgid ""
"If run_all_execution_links is set \"on\" then all local execution links\n"
"will be executed when they are selected.\n"
"\n"
"WARNING - This is potentially VERY dangerous.  Since you may view\n"
"          information that is written by unknown and untrusted sources\n"
"          there exists the possibility that Trojan horse links could be\n"
"          written.  Trojan horse links could be written to erase files\n"
"          or compromise security.  This should only be set to \"on\" if\n"
"          you are viewing trusted source information.\n"
msgstr ""
"Om run_all_execution_links �r satt till \"on\" kommer alla lokala\n"
"programk�rningsl�nkar att k�ras n�r de v�ljs.\n"
"\n"
"VARNING - Detta kan vara MYCKET farligt. Eftersom du kan visa information\n"
"          som skrivits av ok�nda och otillf�rlitliga k�llor �r det m�jligt\n"
"          att trojanska h�stl�nkar kan skrivas. Trojanska h�stl�nkar kan\n"
"          skrivas s� att de raderar filer eller komprometterar s�kerheten.\n"
"          Detta b�r endast aktiveras (\"on\") om du visar information fr�n\n"
"          tillf�rlitliga k�llor.\n"

#: src/LYrcFile.c:489
msgid ""
"If run_execution_links_on_local_files is set \"on\" then all local\n"
"execution links that are found in LOCAL files will be executed when they\n"
"are selected.  This is different from run_all_execution_links in that\n"
"only files that reside on the local system will have execution link\n"
"permissions.\n"
"\n"
"WARNING - This is potentially dangerous.  Since you may view\n"
"          information that is written by unknown and untrusted sources\n"
"          there exists the possibility that Trojan horse links could be\n"
"          written.  Trojan horse links could be written to erase files\n"
"          or compromise security.  This should only be set to \"on\" if\n"
"          you are viewing trusted source information.\n"
msgstr ""
"Om run_all_execution_links_on_local_files �r satt till \"on\" kommer\n"
"alla lokala programk�rningsl�nkar i LOKALA filer att k�ras n�r de v�ljs.\n"
"Detta skiljer sig fr�n run_all_execution_links i det att endast filer\n"
"som ligger p� det lokala systemet har r�ttighet att inneh�lla\n"
"programk�rningsl�nkar.\n"
"\n"
"VARNING - Detta kan vara farligt. Eftersom du kan visa information som\n"
"          skrivits av ok�nda och otillf�rlitliga k�llor �r det m�jligt att\n"
"          trojanska h�stl�nkar kan skrivas. Trojanska h�stl�nkar kan\n"
"          skrivas � att de raderar filer eller komprometterar s�kerheten.\n"
"          Detta b�r endast aktiveras (\"on\") om du visar information fr�n\n"
"          tillf�rlitliga k�llor.\n"

#: src/LYrcFile.c:507
msgid ""
"select_popups specifies whether the OPTIONs in a SELECT block which\n"
"lacks a MULTIPLE attribute are presented as a vertical list of radio\n"
"buttons or via a popup menu.  Note that if the MULTIPLE attribute is\n"
"present in the SELECT start tag, Lynx always will create a vertical list\n"
"of checkboxes for the OPTIONs.  A value of \"on\" will set popup menus\n"
"as the default while a value of \"off\" will set use of radio boxes.\n"
"The default can be overridden via the -popup command line toggle.\n"
msgstr ""
"select_popups anger huruvida OPTION i ett SELECT-block som saknar\n"
"MULTIPLE-attribut skall visas som en vertikal lista med radioknappar\n"
"eller via en popupmuni. Observera att om MULTIPLE-attributet finns i\n"
"SELECT-m�rket kommer Lynx alltid skapa en vertikal lista med kryssrutor\n"
"f�r varje OPTION. V�rdet \"on\" skapar som f�rval popupmenyer, medan\n"
"v�rdet \"off\" v�ljer radioknappar. F�rvalet kan g�s f�rbi via\n"
"kommandoradsflaggan -popup.\n"

#: src/LYrcFile.c:517
msgid ""
"show_color specifies how to set the color mode at startup.  A value of\n"
"\"never\" will force color mode off (treat the terminal as monochrome)\n"
"at startup even if the terminal appears to be color capable.  A value of\n"
"\"always\" will force color mode on even if the terminal appears to be\n"
"monochrome, if this is supported by the library used to build lynx.\n"
"A value of \"default\" will yield the behavior of assuming\n"
"a monochrome terminal unless color capability is inferred at startup\n"
"based on the terminal type, or the -color command line switch is used, or\n"
"the COLORTERM environment variable is set.  The default behavior always is\n"
"used in anonymous accounts or if the \"option_save\" restriction is set.\n"
"The effect of the saved value can be overridden via\n"
"the -color and -nocolor command line switches.\n"
"The mode set at startup can be changed via the \"show color\" option in\n"
"the 'o'ptions menu.  If the option settings are saved, the \"on\" and\n"
"\"off\" \"show color\" settings will be treated as \"default\".\n"
msgstr ""
"show_color anger hur f�rger st�lls in vid start. V�rdet \"never\" tvingar\n"
"f�rg att st�ngas av (terminalen behandlas som vore den monokrom) vid\n"
"start, �ven om terminalen verkar vara kapabel till f�rg. V�rdet \"always\"\n"
"tvingar f�rg att sl�s p� �ven om terminalen verkar vara monokrom, om det\n"
"st�ds av det bibliotek som anv�ndes f�r att bygga lynx. V�rdet \"default\"\n"
"g�r att en monokrom terminal antas s�vida inte f�rgst�d anges vid start\n"
"baserat p� terminaltyp, eller via kommandoradsflaggan -color, eller om\n"
"milj�variabeln COLORTERM �r satt. Detta beteende anv�nds alltid f�r anonyma\n"
"konton, eller om \"option_save\"-begr�nsningen �r satt.\n"
"Det sparade v�rdet kan f�rbig�s med kommandoradsflaggorna -color och\n"
"-nocolor.\n"
"L�get som s�tts vid start kan �ndras via inst�llningen \"visa f�rg\" i\n"
"alternativmenyn. Om alternativen sparas kommer inst�llningarna \"on\" och\n"
"\"off\" att tolkas som \"default\".\n"

#: src/LYrcFile.c:534
msgid ""
"show_cursor specifies whether to 'hide' the cursor to the right (and\n"
"bottom, if possible) of the screen, or to place it to the left of the\n"
"current link in documents, or current option in select popup windows.\n"
"Positioning the cursor to the left of the current link or option is\n"
"helpful for speech or braille interfaces, and when the terminal is\n"
"one which does not distinguish the current link based on highlighting\n"
"or color.  A value of \"on\" will set positioning to the left as the\n"
"default while a value of \"off\" will set 'hiding' of the cursor.\n"
"The default can be overridden via the -show_cursor command line toggle.\n"
msgstr ""
"show_cursor anger om mark�ren skall \"g�mmas\" till h�ger (och nederst,\n"
"om m�jligt) p� sk�rmen, eller om den skall st�llas till v�nster om\n"
"aktuell l�nk i dokument, eller aktuellt alternativ i popupf�nster.\n"
"Att st�lla mark�ren till v�nster om den aktuella l�nken eller alternativet\n"
"f�renklar f�r tal- och braillegr�nssnitt, och om terminalen inte g�r\n"
"skillnad p� den aktuella l�nken med ljus- eller f�rgmarkering. V�rdet\n"
"\"on\" placerar mark�ren till v�nster som f�rval, medan \"off\" \"g�mmer\"\n"
"mark�ren. F�rvalet kan g�s f�rbi via kommandoradsflaggan -show_cursor.\n"

#: src/LYrcFile.c:545
msgid ""
"show_dotfiles specifies that the directory listing should include\n"
"\"hidden\" (dot) files/directories.  If set \"on\", this will be\n"
"honored only if enabled via userdefs.h and/or lynx.cfg, and not\n"
"restricted via a command line switch.  If display of hidden files\n"
"is disabled, creation of such files via Lynx also is disabled.\n"
msgstr ""
"show_dotfiles anger att kataloglistan skall inkludera \"dolda\"\n"
"(punkt-)filer/kataloger. Om satt till \"on\" kommer detta endast\n"
"att l�sas om det aktiverats via userdefs.h och/eller lynx.cfg, och\n"
"inte begr�nsat via en kommandoradsflagga. Om visning av dolda\n"
"filer �r deaktiverat kommer skapandet av s�dana filer via Lynx\n"
"ocks� att deaktiveras.\n"

#: src/LYrcFile.c:556
msgid ""
"If sub_bookmarks is not turned \"off\", and multiple bookmarks have\n"
"been defined (see below), then all bookmark operations will first\n"
"prompt the user to select an active sub-bookmark file.  If the default\n"
"Lynx bookmark_file is defined (see above), it will be used as the\n"
"default selection.  When this option is set to \"advanced\", and the\n"
"user mode is advanced, the 'v'iew bookmark command will invoke a\n"
"statusline prompt instead of the menu seen in novice and intermediate\n"
"user modes.  When this option is set to \"standard\", the menu will be\n"
"presented regardless of user mode.\n"
msgstr ""
"Om sub_bookmarks inte �r avst�ngt (\"off\"), och multipla bokm�rken\n"
"har angetts (se nedan) kommer alla bokm�rkesfunktioner f�rst att be\n"
"anv�ndaren ange en aktiv underbokm�rkesfil. Om en standardbokm�rkesfil\n"
"har definierats (se bookmark_file ovan), kommer den att anv�ndas som\n"
"f�rval. N�r detta alternativ �r satt till \"advanced\", och anv�ndarl�get\n"
"�r avancerat, kommer kommandot visa bokm�rke att visa en statusradsfr�ga\n"
"ist�llet f�r den meny som visas i anv�ndarl�gets nyb�rjar- och\n"
"mellanniv�er. Om detta alternativ s�tts till \"standard\" visas menyn\n"
"oavsett anv�ndarl�ge.\n"

#: src/LYrcFile.c:570
msgid ""
"user_mode specifies the users level of knowledge with Lynx.  The\n"
"default is \"NOVICE\" which displays two extra lines of help at the\n"
"bottom of the screen to aid the user in learning the basic Lynx\n"
"commands.  Set user_mode to \"INTERMEDIATE\" to turn off the extra info.\n"
"Use \"ADVANCED\" to see the URL of the currently selected link at the\n"
"bottom of the screen.\n"
msgstr ""
"user_mode anger anv�ndarens niv� av kunskap om Lynx. F�rvalet\n"
"\"NOVICE\" (nyb�rjare) visar tv� extra rader med hj�lp nederst p�\n"
"sk�rmen f�r att hj�lpa anv�ndaren l�ra de grundl�ggande kommandona\n"
"i Lynx. S�tt user_mode till \"INTERMEDIATE\" (mellanniv�) f�r att\n"
"st�nga av extrainformationen. Anv�nd \"ADVANCED\" f�r att se adressen\n"
"f�r den markerade l�nken nederst p� sk�rmen.\n"

#: src/LYrcFile.c:579
msgid ""
"If verbose_images is \"on\", lynx will print the name of the image\n"
"source file in place of [INLINE], [LINK] or [IMAGE]\n"
"See also VERBOSE_IMAGES in lynx.cfg\n"
msgstr ""
"Om verbose_images �r \"on\" skriver lynx namnet p� bildens k�llfil\n"
"ist�llet f�r [INLINE], [LINK] eller [IMAGE]\n"
"Se �ven VERBOSE_IMAGES i lynx.cfg\n"

#: src/LYrcFile.c:584
msgid ""
"If vi_keys is set to \"on\", then the normal VI movement keys:\n"
"  j = down    k = up\n"
"  h = left    l = right\n"
"will be enabled.  These keys are only lower case.\n"
"Capital 'H', 'J' and 'K will still activate help, jump shortcuts,\n"
"and the keymap display, respectively.\n"
msgstr ""
"Om vi_keys s�tts till \"on\" kommer VI-f�rflyttningstangeter att aktiveras:\n"
"  j = ned      k = upp\n"
"  h = v�nster  l = h�ger\n"
"Dessa tangenter g�ller bara som gemener.\n"
"Versala \"H\", \"J\" och \"K\" aktiverar hj�lp, hoppgenv�gar respektiva\n"
"tangentbordsinst�llningarna.\n"

#: src/LYrcFile.c:592
msgid ""
"The visited_links setting controls how Lynx organizes the information\n"
"in the Visited Links Page.\n"
msgstr ""
"Inst�llningen visited_links anger hur Lynx organiserar informationen\n"
"p� sidan Anv�nda l�nkar.\n"

#: src/LYrcFile.c:810
msgid ""
"If keypad_mode is set to \"NUMBERS_AS_ARROWS\", then the numbers on\n"
"your keypad when the numlock is on will act as arrow keys:\n"
"            8 = Up Arrow\n"
"  4 = Left Arrow    6 = Right Arrow\n"
"            2 = Down Arrow\n"
"and the corresponding keyboard numbers will act as arrow keys,\n"
"regardless of whether numlock is on.\n"
msgstr ""
"Om keypad_mode s�tts till \"NUMBERS_AS_ARROWS\" fungerar siffrorna p�\n"
"ditt numeriska tangentbord som piltangeter n�r NumLock �r aktivt:\n"
"            8 = Upppil\n"
"  4 = V�nsterpil   6 = H�gerpil\n"
"            2 = Nedpil\n"
"och motsvarande siffertangenter p� tangentbordet fungerar som\n"
"piltangetner, oavsett om NumLock �r aktivt eller inte.\n"

#: src/LYrcFile.c:819
msgid ""
"If keypad_mode is set to \"LINKS_ARE_NUMBERED\", then numbers will\n"
"appear next to each link and numbers are used to select links.\n"
msgstr ""
"Om keypad_mode s�tts till \"LINKS_ARE_NUMBERED\" kommer siffror\n"
"att visas vid varje l�nk, och siffror anv�nds f�r att v�lja l�nk.\n"

#: src/LYrcFile.c:823
msgid ""
"If keypad_mode is set to \"LINKS_AND_FORM_FIELDS_ARE_NUMBERED\", then\n"
"numbers will appear next to each link and visible form input field.\n"
"Numbers are used to select links, or to move the \"current link\" to a\n"
"form input field or button.  In addition, options in popup menus are\n"
"indexed so that the user may type an option number to select an option in\n"
"a popup menu, even if the option isn't visible on the screen.  Reference\n"
"lists and output from the list command also enumerate form inputs.\n"
msgstr ""
"Om keypad_mode s�tts till \"LINKS_AND_FORM_FIELDS_ARE_NUMBERED\" kommer\n"
"siffror att visas vid varje l�nk och synligt formul�rindataf�lt.\n"
"Siffror anv�nds f�r att v�lja l�nkar, eller f�r att flytta \"aktuell\n"
"l�nk\" till ett formul�rindataf�lt eller -knapp. Dessutom kommer\n"
"alternativ i popupmenyer att numreras s� att anv�ndaren kan skriva in\n"
"ett alternativnummer f�r att v�lja ett alternativ i popupmenyn, �ven om\n"
"alternativet inte �r synligt p� sk�rmen. Referenslistor och utdata fr�n\n"
"listkommandot kommer �ven de att numrera formul�rindataf�lt.\n"

#: src/LYrcFile.c:832
msgid ""
"NOTE: Some fixed format documents may look disfigured when\n"
"\"LINKS_ARE_NUMBERED\" or \"LINKS_AND_FORM_FIELDS_ARE_NUMBERED\" are\n"
"enabled.\n"
msgstr ""
"OBS: Vissa dokument med fixerat format kan se trasiga ut n�r\n"
"\"LINKS_ARE_NUMBERED\" eller \"LINKS_AND_FORM_FILES_ARE_NUMBERED\" �r\n"
"aktiva.\n"

#: src/LYrcFile.c:864
msgid ""
"Lynx User Defaults File\n"
"\n"
"This file contains options saved from the Lynx Options Screen (normally\n"
"with the '>' key).  There is normally no need to edit this file manually,\n"
"since the defaults here can be controlled from the Options Screen, and the\n"
"next time options are saved from the Options Screen this file will be\n"
"completely rewritten.  You have been warned...\n"
"If you are looking for the general configuration file - it is normally\n"
"called lynx.cfg, and it has different content and a different format.\n"
"It is not this file.\n"
msgstr ""
"Lynx anv�ndarinst�llningsfil\n"
"\n"
"Denna fil inneh�ller alternativ som sparats fr�n Lynx' alternativmeny\n"
"vanligtvis med tangenten \">\"). Vanligtvis beh�ver du inte redigera denna\n"
"fil manuellt, eftersom dessa inst�llningar kan n�s fr�n alternativmenyn,\n"
"och n�sta g�ng alternativen lagras fr�n alternativmenyn kommer denna fil\n"
"helt att skrivas �ver. Du har varnats...\n"
"Om du letar efter den generella konfigurationsfilen heter den normalt\n"
"lynx.cfg, och har annat inneh�ll och ett annat format. Det �r inte denna\n"
"fil.\n"

#~ msgid "KB"
#~ msgstr "KB"

#~ msgid "Remove '%s' and all of its contents?"
#~ msgstr "Ta bort \"%s\" och allt dess inneh�ll?"

#~ msgid "Remove directory and all of its contents?"
#~ msgstr "Ta bort katalog och allt dess inneh�ll?"

#~ msgid "Short read from file, problem?"
#~ msgstr "Filen tog slut tidigt, problem?"

#~ msgid "Unable to open file management menu file."
#~ msgstr "Kan inte �ppna filhanteringsmenyfil."

#~ msgid "create %s"
#~ msgstr "skapa %s"

#~ msgid "Ignoring invalid HOME"
#~ msgstr "Ignorerar ogiltig HOME"

#~ msgid "(From Cookie Jar)"
#~ msgstr "(Fr�n kakburk)"

#~ msgid ""
#~ "partial_thres specifies the number of lines Lynx should download and render\n"
#~ "before we redraw the screen in Partial Display logic\n"
#~ "e.g., partial_thres=2\n"
#~ "would have Lynx redraw every 2 lines that it renders\n"
#~ "partial_thres=-1 would use the entire screensize\n"
#~ msgstr ""
#~ "partial_thres anger antalet rader Lynx skall h�mta och tolka innan sk�rmen\n"
#~ "ritas om. partial_thres=2 g�r att Lynx ritar om sk�rmen f�r varannan rad\n"
#~ "som tolkas. partial_thres=-1 anv�nder sk�rmstorleken\n"

#~ msgid "Comment request cancelled!!!"
#~ msgstr "Kommentaren avbruten!!!"

#~ msgid "You are not allowed to goto \"file:\" URLs"
#~ msgstr "Du till�ts inte g� till \"file:\"-adresser"

#~ msgid "You are not allowed to goto \"finger:\" URLs"
#~ msgstr "Du till�ts inte g� till \"finger:\"-adresser"

#~ msgid "You are not allowed to goto \"ftp:\" URLs"
#~ msgstr "Du till�ts inte g� till \"ftp:\"-adresser"

#~ msgid "You are not allowed to goto \"gopher:\" URLs"
#~ msgstr "Du till�ts inte g� till \"gopher:\"-adresser"

#~ msgid "You are not allowed to goto \"http:\" URLs"
#~ msgstr "Du till�ts inte g� till \"http:\"-adresser"

#~ msgid "You are not allowed to goto \"https:\" URLs"
#~ msgstr "Du till�ts inte g� till \"https:\"-adresser"

#~ msgid "You are not allowed to goto \"lynxcgi:\" URLs"
#~ msgstr "Du till�ts inte g� till \"lynxcgi:\"-adresser"

#~ msgid "You are not allowed to goto \"lynxexec:\" URLs"
#~ msgstr "Du till�ts inte g� till \"lynxexec:\"-adresser"

#~ msgid "You are not allowed to goto \"lynxprog:\" URLs"
#~ msgstr "Du till�ts inte g� till \"lynxprog:\"-adresser"

#~ msgid "You are not allowed to goto \"mailto:\" URLs"
#~ msgstr "Du till�ts inte g� till \"mailto:\"-adresser"

#~ msgid "You are not allowed to goto \"news:\" URLs"
#~ msgstr "Du till�ts inte g� till \"news:\"-adresser"

#~ msgid "You are not allowed to goto \"nntp:\" URLs"
#~ msgstr "Du till�ts inte g� till \"nntp:\"-adresser"

#~ msgid "You are not allowed to goto \"rlogin:\" URLs"
#~ msgstr "Du till�ts inte g� till \"rlogin:\"-adresser"

#~ msgid "You are not allowed to goto \"snews:\" URLs"
#~ msgstr "Du till�ts inte g� till \"snews:\"-adresser"

#~ msgid "You are not allowed to goto \"telnet:\" URLs"
#~ msgstr "Du till�ts inte g� till \"telnet:\"-adresser"

#~ msgid "You are not allowed to goto \"tn3270:\" URLs"
#~ msgstr "Du till�ts inte g� till \"tn3270:\"-adresser"

#~ msgid "You are not allowed to goto \"wais:\" URLs"
#~ msgstr "Du till�ts inte g� till \"wais:\"-adresser"

#~ msgid "This special URL is not allowed as a goto!"
#~ msgstr "Denna specialadress till�ts inte g�s till!"

#~ msgid "Option choice (or page) number: "
#~ msgstr "V�lj alternativ- (eller sid-)nummer: "

#~ msgid "Choice number %d already is current."
#~ msgstr "Val %d �r redan markerat."

#~ msgid "You are already at the end of this choice list."
#~ msgstr "Du �r redan i slutet av vallistan."

#~ msgid "You are already at the beginning of this choice list."
#~ msgstr "Du �r redan i b�rjan av vallistan."

#~ msgid "You are already at page %d of this choice list."
#~ msgstr "Du �r redan p� sida %d i vallistan."

#~ msgid "You have entered an invalid choice number."
#~ msgstr "Du har angett ett felaktigt valnummer."

#~ msgid "Read %ld of %ld %s of data"
#~ msgstr "L�ste %ld av %ld%s data"

#~ msgid "Read %ld %s of data"
#~ msgstr "L�ste %ld%s data"

#~ msgid ", %ld %s/sec."
#~ msgstr ", %ld%s/s"

#~ msgid "Lynx ver. %s"
#~ msgstr "Lynx ver. %s"

#~ msgid "Personal Name: "
#~ msgstr "Namn: "

#~ msgid "Inactive text input, activate to edit (e.g., press ENTER)"
#~ msgstr "Inaktiv textindata, aktivera f�r att redigera (tryck Enter)"

#~ msgid "Left mouse button or return to select, arrow keys to scroll."
#~ msgstr "V�nster musknapp eller Enter v�ljer, piltangenter rullar."